home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 23 / CU Amiga - Super CD-ROM 23 (June 1998).iso / CreatingGames / Utilities / Asm / AB3DIIsrc / source_4000 / CONTROLLOOP.s < prev    next >
Encoding:
Text File  |  1996-10-24  |  57.2 KB  |  3,007 lines

  1. ; Main control loop.
  2. ; This is the very outer loop of the program.
  3.  
  4. ; What needs to be done and when?
  5.  
  6. ; Black screen start.
  7. ; Load title music
  8. ; Load title screen
  9. ; Fade up title screen
  10. ; Select options
  11. ; Play game.
  12.  
  13. ; Playing the game involves allocating screen and
  14. ; level memory, loading the level, loading the
  15. ; samples, loading the wall graphics, playing the
  16. ; level, deallocating the screen memory....
  17.  
  18. ; Control part should therefore:
  19.  
  20. ; 1. Load Title Music
  21. ; 2. Load title screen
  22. ; 3. Fade up title screen.
  23. ; 4. Add 'loading' message
  24. ; 5. Load samples and walls
  25. ; 6: LOOP START
  26. ; 7. Option select screens
  27. ; 8. Free music mem, allocate level mem.
  28. ; 9. Load level
  29. ;10. Play level with options selected
  30. ;11. Reload title music
  31. ;12. Reload title screen
  32. ;13. goto 6
  33.  
  34. INTROTUNEADDR: dc.l 0
  35. INTROTUNENAME: dc.b 'ab3:sounds/abreed3d.med',0
  36.  even
  37. TITLESCRNADDR: dc.l 0
  38. TITLESCRNNAME: dc.b 'TKG1:includes/titlescrnraw1',0
  39.  even
  40. TITLESCRNNAME2: dc.b 'TKG2:includes/titlescrnraw1',0
  41.  even
  42. OPTSPRADDR: dc.l 0
  43. TITLESCRNPTR: dc.l 0
  44.  
  45.  
  46.  
  47. ProtValA: dc.l 0
  48. ProtValB: dc.l 0
  49. ProtValC: dc.l 0
  50. ProtValD: dc.l 0
  51. ProtValE: dc.l 0
  52. ProtValF: dc.l 0
  53. ProtValG: dc.l 0
  54. ProtValH: dc.l 0
  55. ProtValI: dc.l 0
  56. ProtValJ: dc.l 0
  57. ProtValK: dc.l 0
  58. ProtValL: dc.l 0
  59. ProtValM: dc.l 0
  60. ProtValN: dc.l 0
  61.  
  62. MASTERPLAYERONEHEALTH:
  63.   dc.w 0
  64.   dc.w 0
  65. MASTERPLAYERONEAMMO:
  66.  ds.w 20
  67.  
  68. MASTERPLAYERONESHIELD:
  69.  dc.w 0
  70.  dc.w 0
  71. MASTERPLAYERONEGUNS:
  72.  dcb.w 10,0
  73.  
  74. MASTERPLAYERTWOHEALTH:
  75.   dc.w 0
  76.   dc.w 0
  77. MASTERPLAYERTWOAMMO:
  78.  ds.w 20
  79.  
  80. MASTERPLAYERTWOSHIELD:
  81.  dc.w 0
  82.  dc.w 0
  83. MASTERPLAYERTWOGUNS:
  84.  dcb.w 10,0
  85.  
  86. KVALTOASC:
  87.         Dc.b    " `  "," 1  "," 2  "," 3  "
  88.         dc.b    " 4  "," 5  "," 6  "," 7  "
  89.         dc.b    " 8  "," 9  "
  90. ; 10
  91.         Dc.b    " 0  "," -  "," +  "," \  "
  92.         dc.b     '    ','    '," Q  "," W  "
  93.         dc.b    " E  "," R  "
  94. ; 20
  95.         Dc.b    " T  "," Y  "," U  "," I  "
  96.         dc.b    " O  "," P  "," [  "," ]  "
  97.         dc.b    '    ','KP1 '
  98. ; 30
  99.         Dc.b    'KP2 ','KP3 '," A  "," S  "
  100.         dc.b    " D  "," F  "," G  "," H  "
  101.         dc.b    " J  "," K  "
  102. ;40
  103.         Dc.b    " L  "," ;  "," #  ",'    '
  104.         dc.b    '    ','KP4 ','KP5 ','KP6 '
  105.         dc.b    '    '," Z  "
  106. ;50
  107.         Dc.b    " X  "," C  "," V  "," B  "
  108.         dc.b    " N  "," M  "," ,  "," .  "
  109.         dc.b     " /  ",'    '
  110. ;60
  111.         Dc.b    '    ','KP7 ','KP8 ','KP9 '
  112.         dc.b    'SPC ','<-- ','TAB ','ENT '
  113.         dc.b    'RTN ','ESC '
  114. ;70
  115.         Dc.b    'DEL ','    ','    ','    '
  116.         dc.b    'KP- ','    ','UCK ','DCK '
  117.         dc.b    'RCK ','LCK '
  118. ;80
  119.         Dc.b    'FK1 ','FK2 ','FK3 ','FK4 '
  120.         dc.b    'FK5 ','FK6 ','FK7 ','FK8 '
  121.         dc.b    'FK9 ','FK0 '
  122. ;90
  123.         Dc.b    'KP( ','KP) ','KP/ ','KP* '
  124.         dc.b    'KP+ ','HLP ','LSH ','RSH '
  125.         dc.b    'CPL ','CTL '
  126. ;100
  127.         Dc.b    'LAL ','RAL ','LAM ','RAM '
  128.         dc.b    '    ','    ','    ','    '
  129.         dc.b    '    ','    '
  130.         Dc.b    '    ','    ','    ','    '
  131.         dc.b    '    ','    ','    ','    '
  132.         dc.b    '    ','    '
  133.  
  134.  even
  135.  
  136. FINISHEDLEVEL: dc.w 0
  137.  
  138. _IntuitionBase: dc.l 0
  139. _GfxBase: dc.l 0
  140. MyScreen: dc.l 0
  141.  
  142. MyNewScreen    dc.w    0,0        left, top
  143.         dc.w    320,16        width, height
  144.         dc.w    1        depth
  145.         dc.b    0,1        pens
  146.         dc.w    0        viewmodes
  147.         dc.w    CUSTOMSCREEN+SCREENQUIET    type
  148.         dc.l    0        font
  149.         dc.l    0    title
  150.         dc.l    0        gadgets
  151.         dc.l    0        bitmap
  152.  
  153.  
  154. INTUITION_REV    equ    31        v1.1
  155. int_name    INTNAME
  156.  even
  157.  
  158. START:
  159.  
  160.  move.b #'n',mors  
  161.  
  162. ************************************88
  163. * TAKE OUT WHEN PLAYING MODULE AGAIN
  164. ********************************
  165. ProtChkBLev1:
  166.     PRSDF
  167.     PRSDE
  168. ************************************
  169.  
  170. ; move.l #PROTCALLENC,a0
  171. ; move.l #(ENDPROT-PROTCALLENC)/4-1,d1
  172. ; move.l #$75055345,d0
  173. ;codeitup:
  174. ; sub.l d0,(a0)+
  175. ; ror.l #1,d0
  176. ; dbra d1,codeitup
  177. ; rts
  178.  
  179. ProtChkCLev1:
  180.  PRSDA
  181.  
  182.  move.w #$7201,titleplanes
  183.  
  184.  move.l 4.w,a6
  185.  move.l #doslibname,a1
  186.  moveq #0,d0
  187.  jsr -552(a6)
  188.  move.l d0,doslib
  189.  
  190.     moveq    #INTUITION_REV,d0    version
  191.     lea    int_name(pc),a1
  192.     CALLEXEC OpenLibrary
  193.     tst.l    d0
  194. ;    beq    exit_false        if failed then quit
  195.     move.l    d0,_IntuitionBase    else save the pointer
  196.  
  197.     lea    MyNewScreen(pc),a0
  198.     
  199.     CALLINT    OpenScreen        open a screen
  200.     tst.l    d0
  201. ;    beq    exit_closeall        if failed the close both, exit
  202.     move.l    d0,MyScreen
  203.  
  204.     CALLINT RethinkDisplay
  205.  
  206.  move.l #LINKname,a0
  207.  jsr LOADAFILE
  208.  move.l d0,LINKFILE
  209.  
  210.  move.l #LEVELTEXTNAME,a0
  211.  jsr LOADAFILE
  212.  move.l d0,LEVELTEXT
  213.  
  214.  jsr stuff
  215.  
  216. ; move.l gfxbase,a6
  217. ; jsr _LVOOwnBlitter(a6)
  218.  
  219. ; move.l 4.w,a6
  220. ; lea BLITInt,a1
  221. ; moveq #6,d0
  222. ; jsr _LVOSetIntVector(a6)
  223. ; move.l d0,SYSTEMBLITINT
  224.  
  225. ; move.l doslib,a6
  226. ; move.l #LINKname,d1
  227. ; move.l #1005,d2
  228. ; jsr -30(a6)
  229. ; move.l d0,LLhandle
  230. ;
  231. ; move.l doslib,a6
  232. ; move.l d0,d1
  233. ; move.l #LINKSPACE,d2
  234. ; move.l #90000,d3
  235. ; jsr -42(a6)
  236. ;
  237. ; move.l doslib,a6
  238. ; move.l LLhandle,d1
  239. ; jsr -36(a6)
  240.  
  241.  
  242.  PRSDS
  243.  
  244.  jsr _InitLowLevel
  245.  
  246. ; jsr CLEARTITLEPAL
  247.  
  248. ProtChkDLev1:
  249.  PRSDT
  250.  
  251.  move.w #$20,$dff1dc
  252.  move.l #titlecop,$dff080
  253.  PRSDV
  254.  move.w #$87c0,$dff000+dmacon
  255.  move.w #$8020,$dff000+dmacon
  256. ProtChkMLev1:
  257.  move.w $dff006,d0
  258.  lea RVAL2-100(pc),a0
  259.  add.w d0,100(a0)
  260.  
  261. ; bsr GETTITLEMEM
  262. ProtChkELev1:
  263.  PRSDU
  264. ; bsr CLROPTSCRN
  265.  
  266. ; bsr SETUPTITLESCRN
  267.  
  268. ; jsr _InitPlayer
  269.  
  270. ; move.l #INTROTUNENAME,a0
  271. ; jsr _LoadModule
  272. ; move.l d0,INTROTUNEADDR
  273.  PRSDY
  274. ; move.l d0,a0
  275. ; jsr _InitModule
  276.  
  277. ; move.l INTROTUNEADDR,a0
  278. ; jsr _PlayModule
  279. ProtChkFLev1:
  280.  PRSDa
  281. ; move.l #TITLESCRNNAME,TITLESCRNPTR
  282. ; bsr LOADTITLESCRN2
  283.  
  284. ; FLASHER $0f0,$fff
  285.  
  286. ******************************
  287.  jsr mnu_copycredz
  288.  jsr mnu_setscreen
  289.  move.l a7,mnu_mainstack
  290.  jsr mnu_viewcredz
  291.  
  292.  jsr mnu_clearscreen
  293.  
  294.  WBSLOW
  295.  WBSLOW
  296.  
  297. ; move.l 4.w,a6
  298. ; move.l SYSTEMBLITINT,a1
  299. ; moveq #6,d0
  300. ; jsr _LVOSetIntVector(a6)
  301. ;
  302. ; move.l gfxbase,a6
  303. ; jsr _LVODisownBlitter(a6)
  304.  
  305.  move.w #$83f0,$dff096
  306.  
  307. ******************************
  308.  
  309.  
  310. **********************************************
  311.  jsr INITQUEUE
  312. **********************************************
  313.  
  314.  move.w #0,FADEVAL
  315.  move.w #31,FADEAMOUNT
  316.  bsr FADEUPTITLE
  317.  PRSDB
  318.  jsr LOAD_SFX
  319.  jsr LOADWALLS
  320.  jsr LOADFLOOR
  321.  jsr LOADOBS
  322.  PRSDZ
  323.  
  324.  
  325.  move.l #backpicname,a0
  326.  move.l #BackPicture,d0
  327.  move.l #0,d1
  328.  jsr QUEUEFILE
  329.  
  330. ; IFNE CD32VER
  331.  PRSDD
  332. ; ENDC
  333.  
  334. ; jsr _StopPlayer
  335.  PRSDW
  336.  PRSDX
  337. ; jsr _RemPlayer
  338.  
  339.  
  340. ***********************************************
  341.  jsr FLUSHQUEUE
  342. ***********************************************
  343.  
  344.  jsr PATCHSFX
  345.  
  346.  move.w #23,FADEAMOUNT
  347.  bsr FADEDOWNTITLE 
  348.  
  349. ; bsr ASKFORDISK
  350.  
  351.  IFNE CD32VER
  352.  move.l doslib,a6
  353.  move.l #115,d1
  354.  jsr -198(a6)
  355.  ENDC
  356.  
  357. ; move.l #newblag,$80
  358. ; trap #0
  359. ; bra JUMPPASTIT
  360. ; rts
  361. ;
  362. ;newblag:
  363.  
  364.  
  365. ProtChkGLev1:
  366. ; bsr PROTSETUP
  367.  bsr DEFAULTGAME
  368.  
  369. ; move.l INTROTUNEADDR,a0
  370. ; jsr _UnLoadModule
  371.  
  372. ; IFEQ CD32VER
  373. ; jsr KInt_Init
  374. ; ENDC
  375. ProtChkHLev1:
  376. ; rte
  377. ;
  378. ;JUMPPASTIT:
  379.  
  380. ; jsr mnu_GETBLITINT
  381.  jsr mnu_setscreen
  382.  
  383.  jsr mnu_protection
  384.  
  385.  
  386. BACKTOMENU:
  387.  
  388.  jsr CLEARKEYBOARD
  389.  
  390.  
  391.  cmp.b #'s',mors
  392.  beq.s BACKTOSLAVE
  393.  cmp.b #'m',mors
  394.  beq.s BACKTOMASTER
  395.  bsr READMAINMENU
  396.  bra DONEMENU
  397. BACKTOMASTER:
  398.  bsr MASTERMENU
  399.  bra DONEMENU
  400. BACKTOSLAVE:
  401.  bsr SLAVEMENU
  402. DONEMENU:
  403.  
  404.  jsr mnu_clearscreen
  405. ; jsr mnu_DROPBLITINT
  406.  move.w #$83f0,$dff096
  407.  
  408.  bsr WAITREL
  409.  
  410. ; IFEQ CD32VER
  411. ; move.l OLDKINT,$68.w
  412. ; ENDC
  413.  
  414.  
  415.  
  416.  
  417. ; bsr CLRSPRITES
  418.  
  419. ; move.w #23,FADEAMOUNT
  420. ; bsr FADEUPTITLE
  421. ; move.w #31,FADEAMOUNT
  422.  bsr FADEDOWNTITLE
  423.  
  424.  move.w #$0201,titleplanes
  425.  
  426.     FILTER
  427.     
  428.  tst.b SHOULDQUIT
  429.  bne QUITTT
  430.  
  431. ; bsr RELEASETITLEMEM
  432.  
  433.   
  434. ; jsr LOADBOTPIC
  435.  
  436.   
  437.  clr.b FINISHEDLEVEL
  438.  
  439.  move.w #0,PLR1s_angpos
  440.  move.w #0,PLR2s_angpos
  441.  move.w #0,PLR1_angpos
  442.  move.w #0,PLR2_angpos
  443.  move.b #0,PLR1_GunSelected
  444.  move.b #0,PLR2_GunSelected
  445.  
  446. **************************8
  447.  clr.b NASTY
  448. *************************** 
  449.  
  450.  move.l #MASTERPLAYERONEHEALTH,a0
  451.  move.l #MASTERPLAYERONESHIELD,a1
  452.  move.l #PLAYERONEHEALTH,a2
  453.  move.l #PLAYERONESHIELD,a3
  454.  move.l #PLAYERTWOHEALTH,a4
  455.  move.l #PLAYERTWOSHIELD,a5
  456.  
  457.  REPT 11 
  458.  move.l (a0),(a2)+
  459.  move.l (a0)+,(a4)+
  460.  ENDR
  461.  
  462.  REPT 6 
  463.  move.l (a1),(a3)+
  464.  move.l (a1)+,(a5)+
  465.  ENDR
  466.  
  467. *************************************
  468.  jsr INITQUEUE
  469.  
  470.  move.l #MEMF_CHIP,d1
  471.  move.l #10240*8,d0
  472.  move.l 4.w,a6
  473.  jsr -198(a6)
  474.  move.l d0,scrn
  475.  
  476.  move.l #MEMF_CHIP,d1
  477.  move.l #10240*8,d0
  478.  move.l 4.w,a6
  479.  jsr -198(a6)
  480.  move.l d0,scrn2
  481.  
  482.     move.l    #borderpacked,d0
  483.     moveq    #0,d1
  484.     move.l  scrn,a0
  485.     lea    WorkSpace,a1
  486.     lea    $0,a2
  487.     jsr    unLHA
  488.  
  489.     move.l    #borderpacked,d0
  490.     moveq    #0,d1
  491.     move.l  scrn2,a0
  492.     lea    WorkSpace,a1
  493.     lea    $0,a2
  494.     jsr    unLHA
  495.  
  496. ; move.l #MEMF_CHIP,TYPEOFMEM
  497. ; move.l #bordername,a0
  498. ; move.l #scrn,d0
  499. ; move.l #0,d1
  500. ; jsr QUEUEFILE
  501. ; ifeq CHEESEY
  502. ; move.l #bordername,a0
  503. ; move.l #scrn2,d0
  504. ; move.l #0,d1
  505. ; jsr QUEUEFILE
  506. ; endc 
  507. ; jsr FLUSHQUEUE
  508.  
  509.  ifne CHEESEY
  510.  
  511.  move.l scrn,scrn2
  512.  
  513.  endc
  514.  
  515. ************************************* 
  516.  
  517.     jsr PLAYTHEGAME
  518.     
  519. *************************************
  520.  move.l scrn,a1
  521.  move.l #10240*8,d0
  522.  move.l 4.w,a6
  523.  jsr -210(a6)
  524.  ifeq CHEESEY
  525.  move.l scrn2,a1
  526.  move.l #10240*8,d0
  527.  move.l 4.w,a6
  528.  jsr -210(a6)
  529.  endc
  530. *************************************
  531.  
  532. ; bsr FREEBOTMEM 
  533.  
  534. ; bra QUITTT
  535.  
  536.  tst.b FINISHEDLEVEL
  537.  beq dontusestats
  538.  
  539.  move.l #MASTERPLAYERONEHEALTH,a0
  540.  move.l #MASTERPLAYERONESHIELD,a1
  541.  move.l #PLAYERONEHEALTH,a2
  542.  move.l #PLAYERONESHIELD,a3
  543.  
  544.  REPT 11 
  545.  move.l (a2)+,(a0)+
  546.  ENDR
  547.  
  548.  REPT 6 
  549.  move.l (a3)+,(a1)+
  550.  ENDR
  551.  
  552. dontusestats:
  553.  
  554. ; bsr PASSLINETOGAME
  555. ; bsr GETSTATS
  556.  
  557. ; bsr GETTITLEMEM
  558. ; bsr CLROPTSCRN
  559. ; bsr SETUPTITLESCRN
  560.  
  561. ; move.l #TITLESCRNNAME2,TITLESCRNPTR
  562. ; bsr LOADTITLESCRN2
  563. ; move.w #$7201,titleplanes
  564.  
  565. ; move.w #$20,$dff1dc
  566. ; move.l #titlecop,$dff080
  567. ; move.w #$87c0,$dff000+dmacon
  568. ; move.w #$8020,$dff000+dmacon 
  569.  
  570. ; move.w #0,FADEVAL
  571. ; move.w #31,FADEAMOUNT
  572. ; bsr FADEUPTITLE
  573.  
  574. ; move.w #23,FADEAMOUNT
  575. ; bsr FADEDOWNTITLE 
  576.  
  577. ; IFEQ CD32VER
  578. ; jsr KInt_Init
  579. ; ENDC
  580.  
  581.  jsr mnu_GETBLITINT
  582.  jsr mnu_setscreen
  583.  
  584.  
  585.  bra BACKTOMENU
  586.  
  587. QUITTT:
  588.  
  589.  move.l LEVELDATA,d1
  590.  move.l d1,a1
  591.  move.l #120000,d0
  592.  move.l 4.w,a6
  593.  jsr -210(a6)
  594.  
  595.  move.l TEXTSCRN,d1
  596.  move.l d1,a1
  597.  move.l #10240*2,d0
  598.  move.l 4.w,a6
  599.  jsr -210(a6)
  600.  
  601.  move.l FASTBUFFER,d1    
  602.  move.l #2*320*256,d0
  603.  move.l 4.w,a6
  604.  jsr -210(a6)
  605.  
  606. ; jsr RELEASEWALLMEM
  607.  jsr RELEASESAMPMEM
  608.  jsr RELEASEFLOORMEM
  609.  jsr RELEASEOBJMEM
  610.   
  611.  move.l old,$dff080
  612.  move.l 4.w,a6
  613.  lea VBLANKInt,a1
  614.  moveq #INTB_COPER,d0
  615.  jsr _LVORemIntServer(a6)
  616.  
  617.  move.l 4.w,a6
  618.  lea KEYInt,a1
  619.  moveq #INTB_PORTS,d0
  620.  jsr _LVORemIntServer(a6)
  621.  
  622.  move.w #$f8e,$dff1dc
  623.  
  624.  move.l old,$dff080
  625.  move.w _storeint,d0
  626.  or.w d0,$dff000+intena
  627.  
  628. ; move.l    4.w,a6
  629. ; jsr    _LVOPermit(a6)
  630.  
  631.  
  632.  move.l #0,d0
  633.  
  634.  rts
  635.  
  636. SSTACK: dc.l 0
  637.  
  638. backpicname: dc.b "tkg1:includes/rawbackpacked"
  639.   dc.b 0
  640.  
  641. bordername: dc.b "TKG2:includes/newborderRAW",0
  642.  even
  643. borderpacked: incbin "ab3:includes/newborderPACKED"
  644.  
  645. ; KEY OPTIONS:
  646. CONTROLBUFFER:
  647. turn_left_key:
  648.  dc.b $4f
  649. turn_right_key:
  650.  dc.b $4e
  651. forward_key:
  652.  dc.b $4c
  653. backward_key:
  654.  dc.b $4d
  655. fire_key:
  656.  dc.b $65
  657. operate_key:
  658.  dc.b $40
  659. run_key:
  660.  dc.b $61
  661. force_sidestep_key:
  662.  dc.b $67
  663. sidestep_left_key:
  664.  dc.b $39
  665. sidestep_right_key:
  666.  dc.b $3a
  667. duck_key:
  668.  dc.b $22
  669. look_behind_key:
  670.  dc.b $28
  671. jump_key:
  672.  dc.b $f
  673. look_up_key:
  674.  dc.b 27
  675. look_down_key:
  676.  dc.b 42
  677. centre_view_key:
  678.  dc.b 41
  679. next_weapon_key:
  680.  dc.b 68
  681.  
  682. templeftkey: dc.b 0
  683. temprightkey: dc.b 0
  684. tempslkey: dc.b 0 
  685. tempsrkey: dc.b 0
  686.  
  687.  even 
  688.  
  689. GETSTATS:
  690. ; CHANGE PASSWORD INTO RAW DATA
  691.  
  692.  rts
  693.  
  694.  
  695. SETPLAYERS:
  696.  
  697.  move.w PLOPT,d0
  698.  add.b #'a',d0
  699.  move.b d0,LEVA
  700.  move.b d0,LEVB
  701.  move.b d0,LEVC
  702.  move.b d0,LEVD
  703.  move.b d0,LEVE
  704.  
  705.  cmp.b #'s',mors
  706.  beq SLAVESETUP
  707.  cmp.b #'m',mors
  708.  beq MASTERSETUP
  709.  st NASTY
  710. onepla:
  711.  rts
  712.  
  713. NASTY: dc.w 0
  714.  
  715. MASTERSETUP:
  716.  clr.b NASTY
  717.  move.w PLOPT,d0
  718.  jsr SENDFIRST
  719.  
  720.  move.w Rand1,d0
  721.  jsr SENDFIRST
  722.  
  723.  bsr TWOPLAYER
  724.  rts
  725.  
  726. SLAVESETUP:
  727.  CLR.B NASTY
  728.  jsr RECFIRST
  729.  move.w d0,PLOPT
  730.  add.b #'a',d0
  731.  move.b d0,LEVA
  732.  move.b d0,LEVB
  733.  move.b d0,LEVC
  734.  move.b d0,LEVD
  735.  move.b d0,LEVE
  736.  
  737.  jsr RECFIRST
  738.  move.w d0,Rand1
  739.  bsr TWOPLAYER
  740.  
  741.  
  742.  rts
  743.      
  744. ********************************************************
  745.  
  746. ASKFORDISK:
  747.  lea RVAL1+300(pc),a0
  748.  lea RVAL2+900(pc),a1
  749.  PRSDD
  750.  move.w #10,OptScrn
  751.  bsr DRAWOPTSCRN
  752.  
  753. ProtChkNLev1:
  754. .wtrel:
  755.  btst #7,$bfe001
  756.  beq.s .wtrel
  757.  
  758. wtclick:
  759.  add.w #$235,-300(a0)
  760.  add.w #$4533,-900(a0)
  761.  btst #6,$bfe001
  762.  bne.s wtclick
  763.  
  764.  rts
  765.  
  766. CLRSPRITES: 
  767.  move.l #nullspr,d0
  768.  move.w d0,tsp0l
  769.  move.w d0,tsp1l
  770.  move.w d0,tsp2l
  771.  move.w d0,tsp3l
  772.  move.w d0,tsp4l
  773.  move.w d0,tsp5l
  774.  move.w d0,tsp6l
  775.  move.w d0,tsp7l
  776.  swap d0
  777.  move.w d0,tsp0h
  778.  move.w d0,tsp1h
  779.  move.w d0,tsp2h
  780.  move.w d0,tsp3h
  781.  move.w d0,tsp4h
  782.  move.w d0,tsp5h
  783.  move.w d0,tsp6h
  784.  move.w d0,tsp7h 
  785.  rts
  786.  
  787. ********************************************************
  788.  
  789. READMAINMENU:
  790.  
  791.  move.b #'n',mors
  792.  
  793.  move.w MAXLEVEL,d0
  794.  
  795.  
  796.  move.l #mnu_CURRENTLEVELLINE,a1
  797.  muls #40,d0
  798.  move.l LINKFILE,a0
  799.  add.l #LevelName,a0
  800.  add.l d0,a0
  801.  bsr PUTINLINE
  802.  
  803. ; Stay here until 'play game' is selected.
  804.  
  805. ; move.w #0,OptScrn
  806. ; bsr DRAWOPTSCRN
  807. ; move.w #0,OPTNUM
  808.  
  809.  lea mnu_MYMAINMENU,a0
  810.  bsr MYOPENMENU
  811.  
  812. .rdlop:
  813.  lea mnu_MYMAINMENU,a0
  814.  bsr CHECKMENU
  815.  
  816. ; tst.w d0
  817. ; blt.s .rdlop
  818.  
  819. ; tst.w d0
  820. ; bne.s .nonextlev
  821. ; move.w LEVELSELECTED,d0
  822. ; add.w #1,d0
  823. ; cmp.w MAXLEVEL,d0
  824. ; blt .nowrap
  825. ; moveq #0,d0
  826. ;.nowrap:
  827. ; and.w #$f,d0
  828. ; move.w d0,LEVELSELECTED
  829. ; move.l #CURRENTLEVELLINE,a1
  830. ; muls #40,d0
  831. ; move.l #LEVEL_OPTS,a0
  832. ; add.l d0,a0
  833. ; bsr PUTINLINE
  834. ; bsr JUSTDRAWIT
  835. ; bra .rdlop
  836.  
  837. .nonextlev:
  838.  
  839.  cmp.w #1,d0
  840.  bne .noopt
  841.  
  842.  bra MASTERMENU
  843.  
  844. .noopt:
  845.  
  846. ; cmp.w #5,d0
  847. ; bne.s .noqui
  848. ; st SHOULDQUIT
  849. ; bra playgame
  850. ;.noqui
  851.  
  852.  cmp.w #2,d0
  853.  beq playgame
  854.  
  855.  cmp.w #3,d0
  856.  bne .nocontrol
  857.  
  858.  bsr CHANGECONTROLS
  859.  
  860. ; move.w #0,OptScrn
  861. ; bsr DRAWOPTSCRN
  862. ; move.w #0,OPTNUM
  863.  
  864.  lea mnu_MYMAINMENU,a0
  865.  bsr MYOPENMENU
  866.  
  867.  bsr WAITREL
  868.  bra .rdlop
  869.  
  870. .nocontrol:
  871.  
  872. ********************************
  873.  
  874.  cmp.w #4,d0
  875.  bne .nocred
  876. ; bsr SHOWCREDITS
  877. ; move.w #0,OptScrn
  878. ; bsr DRAWOPTSCRN
  879. ; move.w #1,OPTNUM
  880. ;
  881. ; bsr HIGHLIGHT
  882. ;
  883. ; bsr WAITREL
  884. ; bra .rdlop
  885.  
  886.  jsr mnu_viewcredz
  887.  lea mnu_MYMAINMENU,a0
  888.  bsr MYOPENMENU
  889.  
  890.  bra .rdlop
  891.  
  892. ********************************
  893.  
  894. .nocred:
  895.  
  896.  cmp.w #5,d0
  897.  bne .noload
  898.  
  899.  jsr LOADPOSITION
  900.  
  901. ; move.w #0,OptScrn
  902. ; bsr DRAWOPTSCRN
  903. ; move.w #1,OPTNUM
  904.  
  905.  lea mnu_MYMAINMENU,a0
  906.  bsr MYOPENMENU
  907.  
  908.  bsr WAITREL
  909.  bra .rdlop
  910.  
  911. .noload:
  912.  cmp.w #6,d0
  913.  bne playgame
  914.  bsr WAITREL
  915.  
  916.  jsr SAVEPOSITION
  917.  
  918. ; move.w #0,OptScrn
  919. ; bsr DRAWOPTSCRN
  920. ; move.w #1,OPTNUM
  921. ;
  922. ; bsr HIGHLIGHT
  923.  
  924.  lea mnu_MYMAINMENU,a0
  925.  bsr MYOPENMENU
  926.  
  927.  bsr WAITREL
  928.  bra .rdlop
  929.  
  930.  
  931. ;
  932. ; move.l #PASSWORDLINE+12,a0
  933. ; moveq #15,d2
  934. ;.clrline:
  935. ; move.b #32,(a0)+
  936. ; dbra d2,.clrline 
  937. ; move.w #0,OptScrn
  938. ; bsr DRAWOPTSCRN
  939. ;
  940. ; IFEQ CD32VER
  941. ; clr.b lastpressed
  942. ; move.l #PASSWORDLINE+12,a0
  943. ; move.w #0,d1
  944. ;.ENTERPASS:
  945. ; tst.b lastpressed
  946. ; beq .ENTERPASS
  947. ; move.b lastpressed,d2
  948. ; move.b #0,lastpressed
  949. ; move.l #KVALTOASC,a1
  950. ; cmp.l #'<-- ',(a1,d2.w*4)
  951. ; bne .nodel
  952. ;
  953. ; tst.b d1
  954. ; beq .nodel
  955. ;
  956. ; subq #1,d1
  957. ; move.b #32,-(a0)
  958. ; movem.l d0-d7/a0-a6,-(a7)
  959. ; bsr JUSTDRAWIT
  960. ; movem.l (a7)+,d0-d7/a0-a6
  961. ; bra .ENTERPASS
  962. ;
  963. ;.nodel:
  964. ; cmp.l #'RTN ',(a1,d2.w*4)
  965. ; beq .FORGETIT
  966. ; cmp.l #'ESC ',(a1,d2.w*4)
  967. ; beq .FORGETIT
  968. ; move.b 1(a1,d2.w*4),d2
  969. ; cmp.b #65,d2
  970. ; blt .ENTERPASS
  971. ; cmp.b #'Z',d2
  972. ; bgt .ENTERPASS
  973. ; move.b d2,(a0)+
  974. ; move.w #0,OptScrn
  975. ; movem.l d0-d7/a0-a6,-(a7)
  976. ; bsr JUSTDRAWIT
  977. ; movem.l (a7)+,d0-d7/a0-a6
  978. ; add.w #1,d1
  979. ; cmp.w #16,d1
  980. ; blt .ENTERPASS
  981. ;
  982. ; ENDC
  983. ; IFNE CD32VER
  984. ; move.l #PASSWORDLINE+12,a0
  985. ; move.w #15,d0
  986. ;.ENTERPASS:
  987. ; bsr GETACHAR
  988. ; dbra d0,.ENTERPASS
  989. ; ENDC
  990. ;
  991. ; bsr PASSLINETOGAME
  992. ; tst.w d0
  993. ; bne .FORGETIT
  994. ; bsr GETSTATS
  995. ; move.w MAXLEVEL,d0
  996. ; move.l #CURRENTLEVELLINE,a1
  997. ; muls #40,d0
  998. ; move.l #LEVEL_OPTS,a0
  999. ; add.l d0,a0
  1000. ; bsr PUTINLINE
  1001. ;
  1002. ;.FORGETIT:
  1003. ; bsr WAITREL
  1004. ; bsr CALCPASSWORD
  1005. ;
  1006. ; move.w #0,OptScrn
  1007. ; bsr DRAWOPTSCRN
  1008. ;
  1009. ; move.w #1,OPTNUM
  1010. ;
  1011. ; bsr HIGHLIGHT
  1012. ;
  1013. ; bra .rdlop 
  1014.  
  1015. playgame:
  1016.  move.w MAXLEVEL,PLOPT
  1017.  rts
  1018.  
  1019. SHOULDQUIT: dc.w 0
  1020.  
  1021. LEVELSELECTED:
  1022.  dc.w 0
  1023.  
  1024.  IFNE CD32VER
  1025. GETACHAR:
  1026.  moveq #0,d7
  1027.  move.b #'A',(a0)
  1028.  movem.l d0-d7/a0-a6,-(a7)
  1029.  jsr JUSTDRAWIT
  1030.  movem.l (a7)+,d0-d7/a0-a6
  1031.  
  1032. .wtnum:
  1033.  btst #1,$dff00c
  1034.  sne d1
  1035.  btst #1,$dff00d
  1036.  sne d2
  1037.  btst #0,$dff00c
  1038.  sne d3
  1039.  btst #0,$dff00d
  1040.  sne d4
  1041.  
  1042.  eor.b d1,d3
  1043.  eor.b d2,d4
  1044.  
  1045.  tst.b d1
  1046.  beq.s .NODELETE
  1047.  cmp.w #15,d0
  1048.  beq.s .NODELETE
  1049.  move.b #32,(a0)
  1050.  subq #1,a0
  1051.  addq #1,d0
  1052.  move.b (a0),d7
  1053.  sub.b #'A',d7
  1054.  movem.l d0-d7/a0-a6,-(a7)
  1055.  jsr JUSTDRAWIT
  1056.  movem.l (a7)+,d0-d7/a0-a6
  1057.  jsr WAITFORNOPRESS
  1058.  bra .wtnum
  1059. .NODELETE
  1060.  
  1061.  tst.b d4
  1062.  bne.s .PREVNUM
  1063.  tst.b d3
  1064.  bne.s .NEXTNUM
  1065.  btst #7,$bfe001
  1066.  bne.s .wtnum
  1067.  addq #1,a0
  1068.  jsr WAITFORNOPRESS
  1069.  rts
  1070.  
  1071. .PREVNUM:
  1072.  subq #1,d7
  1073.  bge.s .nonegg
  1074.  moveq #15,d7
  1075. .nonegg:
  1076.  move.b d7,d1
  1077.  add.b #'A',d1
  1078.  move.b d1,(a0)
  1079.  movem.l d0-d7/a0-a6,-(a7)
  1080.  jsr JUSTDRAWIT
  1081.  movem.l (a7)+,d0-d7/a0-a6
  1082.  
  1083.  jsr WAITFORNOPRESS
  1084.  
  1085.  bra .wtnum
  1086.  
  1087. .NEXTNUM:
  1088.  addq #1,d7
  1089.  cmp.w #15,d7
  1090.  ble.s .nobigg
  1091.  moveq #0,d7
  1092. .nobigg:
  1093.  move.b d7,d1
  1094.  add.b #'A',d1
  1095.  move.b d1,(a0)
  1096.  movem.l d0-d7/a0-a6,-(a7)
  1097.  jsr JUSTDRAWIT
  1098.  movem.l (a7)+,d0-d7/a0-a6
  1099.  jsr WAITFORNOPRESS
  1100.  bra .wtnum
  1101.  rts
  1102.  ENDC
  1103.  
  1104.  
  1105. MASTERMENU:
  1106.  
  1107.  move.b #'m',mors
  1108.  
  1109.  move.w #0,LEVELSELECTED
  1110.  
  1111.  move.w #0,d0 
  1112.  move.l #mnu_CURRENTLEVELLINEM,a1
  1113.  muls #40,d0
  1114.  move.l LINKFILE,a0
  1115.  add.l #LevelName,a0
  1116.  add.l d0,a0
  1117.  bsr PUTINLINE
  1118.  
  1119. ; Stay here until 'play game' is selected.
  1120.  
  1121. ; move.w #4,OptScrn
  1122. ; bsr DRAWOPTSCRN
  1123. ; move.w #1,OPTNUM
  1124.  
  1125. ; bsr HIGHLIGHT
  1126. ; bsr WAITREL
  1127.  
  1128.  lea mnu_MYMASTERMENU,a0
  1129.  bsr MYOPENMENU
  1130.  
  1131. .rdlop:
  1132.  lea mnu_MYMASTERMENU,a0
  1133.  bsr CHECKMENU
  1134. ; tst.w d0
  1135. ; blt.s .rdlop
  1136. ; bsr WAITREL
  1137.  
  1138.  
  1139.  
  1140.  cmp.w #1,d0
  1141.  bne.s .nonextlev
  1142.  
  1143.  move.w LEVELSELECTED,d0
  1144.  add.w #1,d0
  1145.  cmp.w MAXLEVEL,d0
  1146.  blt .nowrap
  1147.  moveq #0,d0
  1148. .nowrap:
  1149. ; and.w #$f,d0
  1150.  move.w d0,LEVELSELECTED
  1151.  move.l #mnu_CURRENTLEVELLINEM,a1
  1152.  muls #40,d0
  1153.  move.l LINKFILE,a0
  1154.  add.l #LevelName,a0
  1155.  add.l d0,a0
  1156.  bsr PUTINLINE
  1157.  
  1158.  lea mnu_MYMASTERMENU,a0
  1159.  jsr mnu_redraw
  1160.  
  1161.  bra .rdlop
  1162.  
  1163. .nonextlev:
  1164.  
  1165.  cmp.w #2,d0
  1166.  beq .playgame
  1167.  
  1168.  cmp.w #0,d0
  1169.  bne .noopt
  1170.  
  1171.  bra SLAVEMENU
  1172.  
  1173. .noopt:
  1174.  
  1175.  cmp.w #3,d0
  1176.  bne .nocontrol
  1177.  
  1178.  bsr CHANGECONTROLS
  1179.  
  1180. ; move.w #4,OptScrn
  1181. ; bsr DRAWOPTSCRN
  1182. ; move.w #0,OPTNUM
  1183. ;
  1184. ; bsr HIGHLIGHT
  1185. ;
  1186. ; bsr WAITREL
  1187.  
  1188.  lea mnu_MYMASTERMENU,a0
  1189.  bsr MYOPENMENU
  1190.  
  1191.  bra .rdlop
  1192.  
  1193. .nocontrol:
  1194.  
  1195. .playgame
  1196.  
  1197.  move.w LEVELSELECTED,PLOPT
  1198.  rts
  1199.  
  1200. SLAVEMENU:
  1201.  
  1202.  move.b #'s',mors
  1203.  
  1204. ; Stay here until 'play game' is selected.
  1205.  
  1206.  lea mnu_MYSLAVEMENU,a0
  1207.  bsr MYOPENMENU
  1208.  
  1209. ; move.w #5,OptScrn
  1210. ; bsr DRAWOPTSCRN
  1211. ; move.w #1,OPTNUM
  1212. ;
  1213. ; bsr HIGHLIGHT
  1214. ;
  1215. ; bsr WAITREL
  1216. .rdlop:
  1217.  lea mnu_MYSLAVEMENU,a0
  1218.  bsr CHECKMENU
  1219.  tst.w d0
  1220.  blt.s .rdlop
  1221.  bsr WAITREL
  1222.  
  1223.  cmp.w #1,d0
  1224.  beq .playgame
  1225.  
  1226.  cmp.w #0,d0
  1227.  bne .noopt
  1228.  
  1229.  bra READMAINMENU
  1230.  
  1231. .noopt:
  1232.  
  1233.  cmp.w #2,d0
  1234.  bne .nocontrol
  1235.  
  1236.  bsr CHANGECONTROLS
  1237.  
  1238. ; move.w #5,OptScrn
  1239. ; bsr DRAWOPTSCRN
  1240. ; move.w #0,OPTNUM
  1241. ;
  1242. ; bsr HIGHLIGHT
  1243. ;
  1244. ; bsr WAITREL
  1245.  
  1246.  lea mnu_MYSLAVEMENU,a0
  1247.  bsr MYOPENMENU
  1248.  
  1249.  
  1250.  bra .rdlop
  1251.  
  1252. .nocontrol:
  1253. .playgame:
  1254.  
  1255.  rts
  1256.  
  1257. STATBACK: ds.w 34
  1258.  
  1259. TWOPLAYER:
  1260.  
  1261.  move.w #200,PLAYERONEHEALTH
  1262.  move.w #200,PLAYERTWOHEALTH
  1263.  
  1264.  move.w #0,PLAYERONEFUEL
  1265.  
  1266.  st.b PLAYERONEGUNS+1
  1267.  st.b PLAYERONEGUNS+3
  1268.  st.b PLAYERONEGUNS+5
  1269.  st.b PLAYERONEGUNS+7
  1270.  st.b PLAYERONEGUNS+9
  1271.  st.b PLAYERONEGUNS+11
  1272.  st.b PLAYERONEGUNS+13
  1273.  st.b PLAYERONEGUNS+15
  1274.  st.b PLAYERONEGUNS+17
  1275.  st.b PLAYERONEGUNS+19
  1276.  
  1277.  st.b PLAYERONEJETPACK+1
  1278.  
  1279.  st.b PLAYERTWOGUNS+1
  1280.  st.b PLAYERTWOGUNS+3
  1281.  st.b PLAYERTWOGUNS+5
  1282.  st.b PLAYERTWOGUNS+7
  1283.  st.b PLAYERTWOGUNS+9
  1284.  st.b PLAYERTWOGUNS+11
  1285.  st.b PLAYERTWOGUNS+13
  1286.  st.b PLAYERTWOGUNS+15
  1287.  st.b PLAYERTWOGUNS+17
  1288.  st.b PLAYERTWOGUNS+19
  1289.  
  1290.  move.w #0,PLAYERTWOFUEL
  1291.  
  1292.  st.b PLAYERTWOJETPACK+1
  1293.  
  1294.  move.l #PLAYERONEAMMO,a0
  1295.  move.l #PLAYERTWOAMMO,a1
  1296.  move.w #19,d1
  1297. .putinvals
  1298.  jsr GetRand
  1299.  and.w #63,d0
  1300.  add.w #5,d0
  1301.  move.w d0,(a0)+
  1302.  move.w d0,(a1)+
  1303.  dbra d1,.putinvals
  1304.  
  1305.  rts
  1306.  
  1307.  move.w #0,OldEnergy
  1308.  move.w #127,Energy
  1309.  jsr EnergyBar
  1310.  
  1311.  move.w #63,OldAmmo
  1312.  move.w #0,Ammo
  1313.  jsr AmmoBar
  1314.  move.w #0,OldAmmo
  1315.  
  1316.  move.b #0,PLR1_GunSelected
  1317.  
  1318.  move.b #0,PLR2_GunSelected
  1319.  rts
  1320.  
  1321. newdum:
  1322.  rts
  1323.  
  1324. DEFAULTGAME:
  1325.  move.w #0,MAXLEVEL
  1326.  
  1327.  move.l #MASTERPLAYERONEHEALTH,a0
  1328.  move.l #MASTERPLAYERONESHIELD,a1
  1329.  move.l #0,(a0)+
  1330.  move.l #0,(a0)+
  1331.  move.l #0,(a0)+
  1332.  move.l #0,(a0)+
  1333.  move.l #0,(a0)+
  1334.  move.l #0,(a0)+
  1335.  move.l #0,(a0)+
  1336.  move.l #0,(a0)+
  1337.  move.l #0,(a0)+
  1338.  move.l #0,(a0)+
  1339.  move.l #0,(a0)+
  1340.  
  1341.  move.l #0,(a1)+
  1342.  move.l #0,(a1)+
  1343.  move.l #0,(a1)+
  1344.  move.l #0,(a1)+
  1345.  move.l #0,(a1)+
  1346.  move.l #0,(a1)+
  1347.  
  1348.  move.w #200,MASTERPLAYERONEHEALTH
  1349.  move.w #$ff,MASTERPLAYERONEGUNS
  1350.  
  1351.  move.l LINKFILE,a5
  1352.  add.l #GunBulletTypes,a5
  1353.  move.w (a5),d0
  1354.  
  1355.  move.l #MASTERPLAYERONEAMMO,a5
  1356.  move.w #20,(a5,d0.w*2)
  1357.  
  1358.  rts
  1359.  
  1360. CHKPROT: dc.w 0
  1361.  
  1362. GETPARITY:
  1363.  move.w #6,d3
  1364. .calcparity:
  1365.  btst d3,d0
  1366.  beq.s .nochange
  1367.  bchg #7,d0
  1368. .nochange:
  1369.  dbra d3,.calcparity
  1370.  rts
  1371.  
  1372. CHECKPARITY:
  1373.  move.w #6,d3
  1374.  move.b #$0,d2
  1375. .calcparity:
  1376.  btst d3,d0
  1377.  beq.s .nochange
  1378.  bchg #7,d2
  1379. .nochange:
  1380.  dbra d3,.calcparity
  1381.  move.b d0,d1
  1382.  and.b #$80,d1
  1383.  eor.b d1,d2
  1384.  sne.s d5
  1385.  rts
  1386.  
  1387. CALCPASSWORD:
  1388.  rts
  1389.  
  1390. PASSLINETOGAME:
  1391.  rts
  1392.  
  1393. illega:
  1394.  
  1395.  move.w #-1,d0
  1396.  
  1397.  rts
  1398.  
  1399. PASSBUFFER:
  1400.  ds.b 8
  1401.  
  1402. CHECKBUFFER: ds.b 8
  1403.  
  1404. PASS:
  1405.  ds.b 16
  1406.  
  1407. **************************************************
  1408.  
  1409. CHANGECONTROLS:
  1410.  
  1411. ; move.w #6,OptScrn
  1412. ; bsr DRAWOPTSCRN
  1413. ; move.w #0,OPTNUM
  1414. ; bsr HIGHLIGHT
  1415. ; bsr WAITREL
  1416.  
  1417.  lea mnu_MYCONTROLSONE,a0
  1418.  bsr MYOPENMENU
  1419.  
  1420. .rdlop:
  1421.  lea mnu_MYCONTROLSONE,a0
  1422.  bsr CHECKMENU
  1423.  
  1424. ; tst.w d0
  1425. ; blt.s .rdlop
  1426.  
  1427.  cmp.w #11,d0
  1428.  beq CHANGECONTROLS2
  1429.  
  1430.  move.l #KEY_LINES,a0
  1431.  move.w d0,d1
  1432.  muls #21,d1
  1433.  add.l d1,a0
  1434.  add.w #16,a0
  1435.  move.w #$2020,(a0)
  1436.  
  1437.  
  1438.  
  1439.  movem.l a0/d0,-(a7)
  1440.  
  1441.  lea mnu_MYCONTROLSONE,a0
  1442.  jsr mnu_redraw
  1443.  
  1444. *********************************************
  1445.         move.l    #mnu_buttonanim,mnu_frameptr
  1446.         jsr    mnu_getrawvalue
  1447.         move.l    #mnu_cursanim,mnu_frameptr
  1448. ***********************************************
  1449.  
  1450.  move.l #CONTROLBUFFER,a1
  1451.  moveq #0,d1
  1452.  move.b d0,d1
  1453.  
  1454.  movem.l (a7)+,d0/a0
  1455.  
  1456.  move.b d1,(a1,d0.w)
  1457. ; move.l #KVALTOASC,a1
  1458.  add.w #132,d1
  1459.  move.b d1,1(a0)
  1460. ; move.l (a1,d1.w*4),(a0)
  1461. ; bsr JUSTDRAWIT
  1462. ; bsr WAITREL
  1463.  lea mnu_MYCONTROLSONE,a0
  1464.  jsr mnu_redraw
  1465.  bra .rdlop
  1466.  
  1467. .backtomain:
  1468.  rts
  1469.  
  1470.  
  1471. CHANGECONTROLS2:
  1472.  lea mnu_MYCONTROLSTWO,a0
  1473.  bsr MYOPENMENU
  1474.  
  1475. .rdlop:
  1476.  lea mnu_MYCONTROLSTWO,a0
  1477.  bsr CHECKMENU
  1478.  
  1479. ; tst.w d0
  1480. ; blt.s .rdlop
  1481.  
  1482.  cmp.w #6,d0
  1483.  beq .backtomain
  1484.  
  1485.  move.l #KEY_LINES2,a0
  1486.  move.w d0,d1
  1487.  muls #21,d1
  1488.  add.l d1,a0
  1489.  add.w #16,a0
  1490.  move.w #$2020,(a0)
  1491.  
  1492.  movem.l a0/d0,-(a7)
  1493.  
  1494.  lea mnu_MYCONTROLSTWO,a0
  1495.  jsr mnu_redraw
  1496.  
  1497. **********************************************
  1498.         move.l    #mnu_buttonanim,mnu_frameptr
  1499.         jsr    mnu_getrawvalue
  1500.         move.l    #mnu_cursanim,mnu_frameptr
  1501. ***********************************************
  1502.  
  1503.  move.l #CONTROLBUFFER+11,a1
  1504.  moveq #0,d1
  1505.  move.b d0,d1
  1506.  
  1507.  movem.l (a7)+,d0/a0
  1508.  
  1509.  move.b d1,(a1,d0.w)
  1510. ; move.l #KVALTOASC,a1
  1511.  add.w #132,d1
  1512.  move.b d1,1(a0)
  1513. ; move.l (a1,d1.w*4),(a0)
  1514. ; bsr JUSTDRAWIT
  1515. ; bsr WAITREL
  1516.  lea mnu_MYCONTROLSTWO,a0
  1517.  jsr mnu_redraw
  1518.  bra .rdlop
  1519.  
  1520. .backtomain:
  1521.  rts
  1522.  rts
  1523.  
  1524. **************************************************
  1525.  
  1526.  
  1527. MAXLEVEL: dc.w 0
  1528.  
  1529. SHOWCREDITS:
  1530.  move.w #2,OptScrn
  1531.  bsr DRAWOPTSCRN
  1532.  move.w #0,OPTNUM
  1533.  bsr HIGHLIGHT
  1534.  
  1535.  bsr WAITREL
  1536.  
  1537. .rdlop:
  1538.  bsr CHECKMENU
  1539.  tst.w d0
  1540.  blt.s .rdlop
  1541.  
  1542.  bra READMAINMENU
  1543.  
  1544. HELDDOWN:
  1545.  dc.w 0
  1546.  
  1547. WAITREL:
  1548.  
  1549.  movem.l d0/d1/d2/d3,-(a7)
  1550.  
  1551.  move.l #KeyMap,a5
  1552. WAITREL2:
  1553.  btst #7,$bfe001
  1554.  beq.s WAITREL2
  1555.  
  1556.  IFEQ CD32VER
  1557.  tst.b $40(a5)
  1558.  bne.s WAITREL2
  1559.  tst.b $44(a5)
  1560.  bne.s WAITREL2
  1561.  tst.b $4c(a5)
  1562.  bne.s WAITREL2
  1563.  tst.b $4d(a5)
  1564.  bne.s WAITREL2
  1565.  ENDC
  1566.  
  1567.  btst #1,$dff00c
  1568.  sne d0
  1569.  btst #1,$dff00d
  1570.  sne d1
  1571.  btst #0,$dff00c
  1572.  sne d2
  1573.  btst #0,$dff00d
  1574.  sne d3
  1575.  
  1576.  eor.b d0,d2
  1577.  eor.b d1,d3
  1578.  tst.b d2
  1579.  bne.s WAITREL2
  1580.  tst.b d3
  1581.  bne.s WAITREL2
  1582.  
  1583.  
  1584.  movem.l (a7)+,d0/d1/d2/d3
  1585.  rts
  1586.  
  1587. PUTINLINE:
  1588.  moveq #19,d0
  1589. pill
  1590.  move.b (a0)+,(a1)+
  1591.  dbra d0,pill
  1592.  rts
  1593.  
  1594. MYOPENMENU:
  1595. .redraw:    move.l    a0,-(a7)
  1596.         jsr    mnu_openmenu        ; Open new menu
  1597.         move.l    (a7)+,a0
  1598.     rts
  1599.  
  1600. CHECKMENU:
  1601.  
  1602.     move.b #0,lastpressed
  1603.  
  1604. .loop:        movem.l    a0,-(a7)
  1605.         jsr    mnu_update
  1606.         movem.l    (a7)+,a0
  1607.         move.l    a0,-(a7)
  1608.         jsr    mnu_waitmenu        ; Wait for option
  1609.         move.l    (a7)+,a0
  1610.         moveq.l    #0,d2
  1611.         move.w    mnu_row,d2
  1612.         divu    14(a0),d2
  1613.         swap.w    d2
  1614.         move.w    d2,mnu_currentsel
  1615.  
  1616.          move.w d2,d0    ; option number
  1617.  
  1618.  rts
  1619.  
  1620. HIGHLIGHT:
  1621.  
  1622.  SAVEREGS
  1623.  
  1624.  move.w OptScrn,d0
  1625.  move.l #MENUDATA,a0
  1626.  move.l 4(a0,d0.w*8),a0
  1627.  move.w OPTNUM,d0
  1628.  lea (a0,d0.w*8),a0
  1629.  move.w (a0)+,d0    ;left
  1630.  move.w (a0)+,d1    ;top
  1631.  move.w (a0)+,d2    ;width
  1632.  
  1633.  muls #16*8,d1
  1634.  move.l OPTSPRADDR,a1
  1635.  add.w d1,a1
  1636.  add.w #8+16,a1
  1637.  move.l #SCRTOSPR2,a5
  1638.  adda.w d0,a5
  1639.  adda.w d0,a5
  1640.  
  1641. NOTLOP:
  1642.  
  1643.  move.w (a5)+,d3
  1644.  lea (a1,d3.w),a2
  1645.  not.b (a2)
  1646.  not.b 16(a2)
  1647.  not.b 32(a2)
  1648.  not.b 48(a2)
  1649.  not.b 64(a2)
  1650.  not.b 80(a2)
  1651.  not.b 96(a2)
  1652.  not.b 112(a2)
  1653.  not.b 128(a2)
  1654.  subq #1,d2
  1655.  bgt.s NOTLOP
  1656.  
  1657.  GETREGS
  1658.  rts
  1659.  
  1660. SCRTOSPR2:
  1661. val SET 0
  1662.  REPT 6
  1663.  dc.w val+0
  1664.  dc.w val+1
  1665.  dc.w val+2
  1666.  dc.w val+3
  1667.  dc.w val+4
  1668.  dc.w val+5
  1669.  dc.w val+6
  1670.  dc.w val+7
  1671. val SET val+258*16
  1672.  ENDR
  1673.  
  1674. CLROPTSCRN:
  1675.  
  1676.  move.l #$2cdfea,d0
  1677.  move.w (a4,d0.l),d0
  1678.  add.w d0,RVAL2
  1679.  
  1680.  move.l OPTSPRADDR,a0
  1681.  lea 16(a0),a1
  1682.  lea 16+(258*16)(a0),a2
  1683.  lea 16+(258*16*2)(a0),a3
  1684.  lea 16+(258*16*3)(a0),a4
  1685.  lea 258*16(a4),a0
  1686.  
  1687.  move.w #256,d0
  1688.  moveq #0,d1
  1689. CLRLOP:
  1690.  move.l d1,(a0)+
  1691.  move.l d1,(a0)+
  1692.  move.l d1,(a0)+
  1693.  move.l d1,(a0)+
  1694.  move.l d1,(a1)+
  1695.  move.l d1,(a1)+
  1696.  move.l d1,(a1)+
  1697.  move.l d1,(a1)+
  1698.  move.l d1,(a2)+
  1699.  move.l d1,(a2)+
  1700.  move.l d1,(a2)+
  1701.  move.l d1,(a2)+
  1702.  move.l d1,(a3)+
  1703.  move.l d1,(a3)+
  1704.  move.l d1,(a3)+
  1705.  move.l d1,(a3)+
  1706.  move.l d1,(a4)+
  1707.  move.l d1,(a4)+
  1708.  move.l d1,(a4)+
  1709.  move.l d1,(a4)+
  1710.  dbra d0,CLRLOP
  1711.  
  1712.  move.l OPTSPRADDR,a0
  1713.  move.w #44*256+64,(a0)
  1714.  move.w #44*256+2,8(a0)
  1715.  add.l #258*16,a0
  1716.  
  1717.  move.w #44*256+96,(a0)
  1718.  move.w #44*256+2,8(a0)
  1719.  add.l #258*16,a0
  1720.  
  1721.  move.w #44*256+128,(a0)
  1722.  move.w #44*256+2,8(a0)
  1723.  add.l #258*16,a0
  1724.  
  1725.  move.w #44*256+160,(a0)
  1726.  move.w #44*256+2,8(a0)
  1727.  add.l #258*16,a0
  1728.  
  1729.  move.w #44*256+192,(a0)
  1730.  move.w #44*256+2,8(a0)
  1731.  
  1732.  rts
  1733.  
  1734. DRAWOPTSCRN:
  1735.  rts
  1736.  
  1737.  bsr CLROPTSCRN
  1738.  
  1739. JUSTDRAWIT:
  1740.  
  1741.  move.l #font,a0
  1742.  move.l #MENUDATA,a1
  1743.  move.w OptScrn,d0
  1744.  move.l (a1,d0.w*8),a1
  1745.  
  1746.  move.l OPTSPRADDR,a3
  1747.  add.l #16,a3
  1748.  moveq #0,d2
  1749.  
  1750.  move.w #31,d0
  1751. linelop:
  1752.  move.w #39,d1
  1753.  move.l #SCRTOSPR,a4
  1754.  move.l a3,a2
  1755. charlop:
  1756.  move.b (a1)+,d2
  1757.  lea (a0,d2.w*8),a5
  1758.  move.b (a5)+,(a2)
  1759.  move.b (a5)+,16(a2)
  1760.  move.b (a5)+,32(a2)
  1761.  move.b (a5)+,48(a2)
  1762.  move.b (a5)+,64(a2)
  1763.  move.b (a5)+,80(a2)
  1764.  move.b (a5)+,96(a2)
  1765.  move.b (a5),112(a2)
  1766.  add.w (a4)+,a2
  1767.  dbra d1,charlop
  1768.  add.w #16*8,a3
  1769.  dbra d0,linelop
  1770.  
  1771.  rts
  1772.   
  1773. SCRTOSPR:
  1774.  dc.w 1,1,1,1,1,1,1,258*16-7
  1775.  dc.w 1,1,1,1,1,1,1,258*16-7
  1776.  dc.w 1,1,1,1,1,1,1,258*16-7
  1777.  dc.w 1,1,1,1,1,1,1,258*16-7
  1778.  dc.w 1,1,1,1,1,1,1,258*16-7
  1779.  dc.w 1,1,1,1,1,1,1,258*16-7
  1780.   
  1781. OPTNUM: dc.w 0
  1782. OptScrn: dc.w 0
  1783.  
  1784. SAVEGAMENAME: dc.b "tkg2:boot.dat",0
  1785.  even
  1786.  
  1787. SAVEGAMEPOS: dc.l 0
  1788. SAVEGAMELEN: dc.l 0
  1789.  
  1790. LOADPOSITION: 
  1791.  
  1792.  jsr mnu_clearscreen
  1793.  jsr mnu_DROPBLITINT 
  1794.  
  1795.  move.l #SAVEGAMENAME,a0
  1796.  move.l #SAVEGAMEPOS,d0
  1797.  move.l #SAVEGAMELEN,d1
  1798.  jsr INITQUEUE
  1799.  jsr QUEUEFILE
  1800.  jsr FLUSHQUEUE
  1801.  
  1802.  jsr mnu_GETBLITINT
  1803.  jsr mnu_setscreen
  1804.  
  1805.  
  1806.  move.l SAVEGAMEPOS,a2    ; address of first saved game.
  1807.  
  1808.  move.l #mnu_LSLOTA+21,a4
  1809.  
  1810.  move.l a2,a3
  1811.  add.w #2+(22*2)+(12*2),a3
  1812.  move.w #4,d7
  1813. .findlevs:
  1814.  
  1815.  move.l a4,a1
  1816.  move.w (a3),d1
  1817.  muls #40,d1
  1818.  move.l LINKFILE,a0
  1819.  add.l #LevelName,a0
  1820.  add.l d1,a0
  1821.  jsr PUTINLINE
  1822.  add.l #21,a4
  1823.  add.w #2+(22*2)+(12*2),a3
  1824.  
  1825.  dbra d7,.findlevs
  1826.  
  1827. ; move.w #8,OptScrn
  1828. ; move.w #0,OPTNUM
  1829.  
  1830. ; bsr DRAWOPTSCRN
  1831. ; bsr HIGHLIGHT
  1832. ; bsr WAITREL
  1833.  
  1834.  lea mnu_MYLOADMENU,a0
  1835.  bsr MYOPENMENU
  1836.  
  1837. .rdlop:
  1838.  lea mnu_MYLOADMENU,a0
  1839.  bsr CHECKMENU
  1840.  
  1841.  cmp.w #6,d0
  1842.  beq.s .noload
  1843.  
  1844.  move.l SAVEGAMEPOS,a0
  1845.  muls #2+(22*2)+(12*2),d0
  1846.  add.l d0,a0
  1847.  
  1848.  move.l #MASTERPLAYERONEHEALTH,a1
  1849.  move.w (a0)+,MAXLEVEL
  1850.  
  1851.  REPT 11
  1852.  move.l (a0)+,(a1)+
  1853.  ENDR
  1854.  REPT 6
  1855.  move.l (a0)+,(a1)+
  1856.  ENDR
  1857.  
  1858.  move.w MAXLEVEL,d0
  1859.  move.l #mnu_CURRENTLEVELLINE,a1
  1860.  muls #40,d0
  1861.  move.l LINKFILE,a0
  1862.  add.l #LevelName,a0
  1863.  add.l d0,a0
  1864.  bsr PUTINLINE
  1865.  
  1866. .noload:
  1867.  
  1868.  move.l SAVEGAMEPOS,a1
  1869.  move.l SAVEGAMELEN,d0
  1870.  CALLEXEC FreeMem
  1871.  
  1872.  rts
  1873.  
  1874. SAVEPOSITION:
  1875.  
  1876.  jsr mnu_clearscreen
  1877.  jsr mnu_DROPBLITINT 
  1878.  
  1879.  move.l #SAVEGAMENAME,a0
  1880.  move.l #SAVEGAMEPOS,d0
  1881.  move.l #SAVEGAMELEN,d1
  1882.  jsr INITQUEUE
  1883.  jsr QUEUEFILE
  1884.  jsr FLUSHQUEUE
  1885.  
  1886.  jsr mnu_GETBLITINT
  1887.  jsr mnu_setscreen
  1888.  
  1889.  move.l SAVEGAMEPOS,a2    ; address of first saved game.
  1890.  
  1891.  add.w #2+(22*2)+(12*2),a2
  1892.  
  1893.  move.l #mnu_SSLOTA,a4
  1894.  
  1895.  move.l a2,a3
  1896.  move.w #4,d7
  1897. .findlevs:
  1898.  
  1899.  move.l a4,a1
  1900.  move.w (a3),d1
  1901.  muls #40,d1
  1902.  move.l LINKFILE,a0
  1903.  add.l #LevelName,a0
  1904.  add.l d1,a0
  1905.  jsr PUTINLINE
  1906.  add.l #21,a4
  1907.  add.w #2+(22*2)+(12*2),a3
  1908.  
  1909.  dbra d7,.findlevs
  1910.  
  1911. ; move.w #9,OptScrn
  1912. ; move.w #0,OPTNUM
  1913.  
  1914. ; bsr DRAWOPTSCRN
  1915. ; bsr HIGHLIGHT
  1916. ; bsr WAITREL
  1917.  
  1918.  lea mnu_MYSAVEMENU,a0
  1919.  bsr MYOPENMENU
  1920.  
  1921. .rdlop:
  1922.  lea mnu_MYSAVEMENU,a0
  1923.  bsr CHECKMENU
  1924.  
  1925.  cmp.w #5,d0
  1926.  beq .nosave
  1927.  
  1928.  move.l d0,-(a7)
  1929.  
  1930.  jsr mnu_clearscreen
  1931.  jsr mnu_DROPBLITINT
  1932.  
  1933.  move.w #$83f0,$dff096
  1934.  
  1935.  move.l (a7)+,d0
  1936.  
  1937.  addq #1,d0
  1938.  
  1939.  move.l SAVEGAMEPOS,a0
  1940.  muls #2+(22*2)+(12*2),d0
  1941.  add.l d0,a0
  1942.  
  1943.  move.l #MASTERPLAYERONEHEALTH,a1
  1944.  move.w MAXLEVEL,(a0)+
  1945.  
  1946.  REPT 11
  1947.  move.l (a1)+,(a0)+
  1948.  ENDR
  1949.  REPT 6
  1950.  move.l (a1)+,(a0)+
  1951.  ENDR
  1952.   
  1953.  move.l oldcopper,$dff080
  1954.  move.w #$8020,$dff000+intena
  1955.  
  1956.  move.l _IntuitionBase,a6
  1957.  jsr _LVORemakeDisplay(a6)
  1958.  
  1959.  jsr _LVORethinkDisplay(a6)
  1960.  
  1961.  move.l doslib,a6
  1962.  move.l #SAVEGAMENAME,d1
  1963.  move.l #1006,d2
  1964.  jsr -30(a6)
  1965.  move.l d0,handle
  1966.  
  1967.  move.l doslib,a6
  1968.  move.l SAVEGAMEPOS,d2
  1969.  move.l handle,d1
  1970.  move.l SAVEGAMELEN,d3
  1971.  jsr _LVOWrite(a6)
  1972.  
  1973.  move.l doslib,a6
  1974.  move.l handle,d1
  1975.  jsr -36(a6)
  1976.  
  1977.  move.l doslib,a6
  1978.  move.l #200,d1
  1979.  jsr -198(a6) 
  1980.  
  1981.  move.w #$0020,$dff000+intena
  1982.  
  1983.  jsr mnu_GETBLITINT
  1984.  jsr mnu_setscreen
  1985.   
  1986. .nosave:
  1987.  
  1988.  move.l SAVEGAMEPOS,a1
  1989.  move.l SAVEGAMELEN,d0
  1990.  CALLEXEC FreeMem
  1991.  
  1992.  rts
  1993.  
  1994. MENUDATA:
  1995. ;0
  1996.  dc.l ONEPLAYERMENU_TXT
  1997.  dc.l ONEPLAYERMENU_OPTS
  1998. ;1
  1999.  dc.l INSTRUCTIONS_TXT
  2000.  dc.l INSTRUCTIONS_OPTS
  2001. ;2
  2002.  dc.l CREDITMENU_TXT
  2003.  dc.l CREDITMENU_OPTS
  2004. ;3
  2005.  dc.l ASKFORDISK_TXT
  2006.  dc.l ASKFORDISK_OPTS
  2007. ;4
  2008. ; dc.l ONEPLAYERMENU_TXT
  2009. ; dc.l ONEPLAYERMENU_OPTS
  2010.  dc.l MASTERPLAYERMENU_TXT
  2011.  dc.l MASTERPLAYERMENU_OPTS
  2012. ;5
  2013.  dc.l SLAVEPLAYERMENU_TXT
  2014.  dc.l SLAVEPLAYERMENU_OPTS
  2015. ;6
  2016.  dc.l CONTROL_TXT
  2017.  dc.l CONTROL_OPTS
  2018. ;7
  2019.  dc.l PROTMENU_TXT
  2020.  dc.l CONTROL_OPTS
  2021. ;8
  2022.  dc.l LOADMENU_TXT
  2023.  dc.l LOADMENU_OPTS
  2024. ;9
  2025.  dc.l SAVEMENU_TXT
  2026.  dc.l SAVEMENU_OPTS
  2027. ;10
  2028.  dc.l LEVELDISK_TXT
  2029.  dc.l ASKFORDISK_OPTS
  2030.  
  2031.  
  2032. EMPTYSLOTNAME:
  2033. ;      0123456789012345678901234567890123456789
  2034.  dc.b '               EMPTY SLOT               ' 
  2035.  
  2036. LOADMENU_TXT: 
  2037. ;      0123456789012345678901234567890123456789
  2038.  dc.b '                                        ' ;0
  2039.  dc.b '                                        ' ;1
  2040.  dc.b '                                        ' ;2
  2041.  dc.b '                                        ' ;3
  2042.  dc.b '         LOAD A SAVED POSITION:         ' ;4
  2043.  dc.b '                                        ' ;5
  2044.  dc.b '                                        ' ;6
  2045.  dc.b '                                        ' ;7
  2046.  dc.b '                                        ' ;8
  2047. LSLOTA:
  2048.  dc.b '                                        ' ;9
  2049.  dc.b '                                        ' ;0
  2050. LSLOTB:
  2051.  dc.b '                                        ' ;1
  2052.  dc.b '                                        ' ;2
  2053. LSLOTC:
  2054.  dc.b '                                        ' ;3
  2055.  dc.b '                                        ' ;4
  2056. LSLOTD:
  2057.  dc.b '                                        ' ;5
  2058.  dc.b '                                        ' ;6
  2059. LSLOTE:
  2060.  dc.b '                                        ' ;7
  2061.  dc.b '                                        ' ;8
  2062. LSLOTF:
  2063.  dc.b '                                        ' ;9
  2064.  dc.b '                                        ' ;0
  2065.  dc.b '               * CANCEL *               ' ;1
  2066.  dc.b '                                        ' ;2
  2067.  dc.b '                                        ' ;3
  2068.  dc.b '                                        ' ;4
  2069.  dc.b '                                        ' ;5
  2070.  dc.b '                                        ' ;6
  2071.  dc.b '                                        ' ;7
  2072.  dc.b '                                        ' ;8
  2073.  dc.b '                                        ' ;9
  2074.  dc.b '                                        ' ;0
  2075.  dc.b '                                        ' ;1
  2076.  
  2077. LOADMENU_OPTS:
  2078.  dc.w 0,9,40,1
  2079.  dc.w 0,11,40,1
  2080.  dc.w 0,13,40,1
  2081.  dc.w 0,15,40,1
  2082.  dc.w 0,17,40,1
  2083.  dc.w 0,19,40,1
  2084.  dc.w 14,21,12,1
  2085.  dc.w -1
  2086.  
  2087. LEVELDISK_TXT:
  2088. ;      0123456789012345678901234567890123456789
  2089.  dc.b '                                        ' ;0
  2090.  dc.b '                                        ' ;0
  2091.  dc.b '                                        ' ;0
  2092.  dc.b '                                        ' ;0
  2093.  dc.b '                                        ' ;0
  2094.  dc.b '                                        ' ;0
  2095.  dc.b '                                        ' ;0
  2096.  dc.b '                                        ' ;0
  2097.  dc.b '                                        ' ;0
  2098.  dc.b '                                        ' ;0
  2099.  dc.b '                                        ' ;0
  2100.  dc.b '  IF PLAYING FROM DISK, PLEASE INSERT   ' ;0
  2101.  dc.b '       LEVELS DISK IN DRIVE DF0:        ' ;0
  2102.  dc.b '                                        ' ;0
  2103.  dc.b '     PRESS MOUSE BUTTON WHEN READY..    ' ;0
  2104.  dc.b '                                        ' ;0
  2105.  dc.b '                                        ' ;0
  2106.  dc.b '                                        ' ;0
  2107.  dc.b '                                        ' ;0
  2108.  dc.b '                                        ' ;0
  2109.  dc.b '                                        ' ;0
  2110.  dc.b '                                        ' ;0
  2111.  dc.b '                                        ' ;0
  2112.  dc.b '                                        ' ;0
  2113.  dc.b '                                        ' ;0
  2114.  dc.b '                                        ' ;0
  2115.  dc.b '                                        ' ;0
  2116.  dc.b '                                        ' ;0
  2117.  dc.b '                                        ' ;0
  2118.  dc.b '                                        ' ;0
  2119.  dc.b '                                        ' ;0
  2120.  dc.b '                                        ' ;0
  2121.  
  2122.  
  2123. SAVEMENU_TXT: 
  2124. ;      0123456789012345678901234567890123456789
  2125.  dc.b '                                        ' ;0
  2126.  dc.b '                                        ' ;1
  2127.  dc.b '                                        ' ;2
  2128.  dc.b '                                        ' ;3
  2129.  dc.b '         SAVE CURRENT POSITION:         ' ;4
  2130.  dc.b '                                        ' ;5
  2131.  dc.b '                                        ' ;6
  2132.  dc.b '                                        ' ;7
  2133.  dc.b '                                        ' ;8
  2134. SSLOTA:
  2135.  dc.b '                                        ' ;9
  2136.  dc.b '                                        ' ;0
  2137. SSLOTB:
  2138.  dc.b '                                        ' ;1
  2139.  dc.b '                                        ' ;2
  2140. SSLOTC:
  2141.  dc.b '                                        ' ;3
  2142.  dc.b '                                        ' ;4
  2143. SSLOTD:
  2144.  dc.b '                                        ' ;5
  2145.  dc.b '                                        ' ;6
  2146. SSLOTE:
  2147.  dc.b '                                        ' ;7
  2148.  dc.b '                                        ' ;8
  2149. SSLOTF:
  2150.  dc.b '                                        ' ;9
  2151.  dc.b '                                        ' ;0
  2152.  dc.b '               * CANCEL *               ' ;1
  2153.  dc.b '                                        ' ;2
  2154.  dc.b '                                        ' ;3
  2155.  dc.b '                                        ' ;4
  2156.  dc.b '                                        ' ;5
  2157.  dc.b '                                        ' ;6
  2158.  dc.b '                                        ' ;7
  2159.  dc.b '                                        ' ;8
  2160.  dc.b '                                        ' ;9
  2161.  dc.b '                                        ' ;0
  2162.  dc.b '                                        ' ;1
  2163.  
  2164. SAVEMENU_OPTS:
  2165.  dc.w 0,9,40,1
  2166.  dc.w 0,11,40,1
  2167.  dc.w 0,13,40,1
  2168.  dc.w 0,15,40,1
  2169.  dc.w 0,17,40,1
  2170.  dc.w 0,19,40,1
  2171.  dc.w 14,21,12,1
  2172.  dc.w -1
  2173.  
  2174.  
  2175. ASKFORDISK_TXT:
  2176. ;      0123456789012345678901234567890123456789
  2177.  dc.b '                                        ' ;0
  2178.  dc.b '                                        ' ;1
  2179.  dc.b '                                        ' ;2
  2180.  dc.b '                                        ' ;3
  2181.  dc.b '                                        ' ;4
  2182.  dc.b '                                        ' ;5
  2183.  dc.b '                                        ' ;6
  2184.  dc.b '                                        ' ;7
  2185.  dc.b '                                        ' ;8
  2186.  dc.b '                                        ' ;9
  2187.  dc.b '                                        ' ;0
  2188.  dc.b '                                        ' ;1
  2189.  dc.b '                                        ' ;2
  2190.  dc.b '         PLEASE INSERT VOLUME:          ' ;3
  2191.  dc.b '                                        ' ;4
  2192. VOLLINE:
  2193.  dc.b '                                        ' ;9
  2194.  dc.b '                                        ' ;9
  2195.  dc.b '          PRESS MOUSE BUTTON            ' ;5
  2196.  dc.b '          WHEN DISK ACTIVITY            ' ;6
  2197.  dc.b '               FINISHES                 ' ;7
  2198.  dc.b '                                        ' ;8
  2199.  dc.b '                                        ' ;1
  2200.  dc.b '                                        ' ;2
  2201.  dc.b '                                        ' ;3
  2202.  dc.b '                                        ' ;4
  2203.  dc.b '                                        ' ;5
  2204.  dc.b '                                        ' ;6
  2205.  dc.b '                                        ' ;7
  2206.  dc.b '                                        ' ;8
  2207.  dc.b '                                        ' ;9
  2208.  dc.b '                                        ' ;0
  2209.  dc.b '                                        ' ;1
  2210.  
  2211. ASKFORDISK_OPTS:
  2212.  dc.w -1
  2213.  
  2214.  
  2215. ONEPLAYERMENU_TXT:
  2216. ;      0123456789012345678901234567890123456789
  2217.  dc.b '                                        ' ;0
  2218.  dc.b '                                        ' ;1
  2219.  dc.b '                                        ' ;2
  2220.  dc.b '                                        ' ;3
  2221.  dc.b '                                        ' ;4
  2222.  dc.b '                                        ' ;5
  2223.  dc.b '                                        ' ;6
  2224.  dc.b '                                        ' ;7
  2225.  dc.b '                                        ' ;8
  2226.  dc.b '                                        ' ;9
  2227.  dc.b '                                        ' ;0
  2228. CURRENTLEVELLINE:
  2229.  dc.b '         *** A.F DEMO LEVEL ***         ' ;1 
  2230.  dc.b '                                        ' ;2
  2231.  dc.b '                1 PLAYER                ' ;3
  2232.  dc.b '                                        ' ;4
  2233.  dc.b '               PLAY  GAME               ' ;5
  2234.  dc.b '                                        ' ;6
  2235.  dc.b '            CONTROL  OPTIONS            ' ;7
  2236.  dc.b '                                        ' ;8
  2237.  dc.b '              GAME CREDITS              ' ;9
  2238.  dc.b '                                        ' ;0
  2239.  dc.b '             LOAD  POSITION             ' ;1
  2240.  dc.b '                                        ' ;2
  2241. PASSWORDLINE:
  2242.  dc.b '             SAVE  POSITION             ' ;1
  2243.  dc.b '                                        ' ;4
  2244.  dc.b '                                        ' ;6
  2245.  dc.b '                                        ' ;6
  2246.  dc.b '                                        ' ;7
  2247.  dc.b '                                        ' ;8
  2248.  dc.b '                                        ' ;9
  2249.  dc.b '                                        ' ;0
  2250.  dc.b '                                        ' ;1
  2251.  
  2252. ONEPLAYERMENU_OPTS:
  2253.  dc.w 0,11,40,1
  2254.  dc.w 16,13,8,1
  2255.  dc.w 15,15,10,1
  2256.  dc.w 12,17,16,1
  2257.  dc.w 14,19,12,1
  2258.  dc.w 12,21,16,1
  2259.  dc.w 12,23,16,1
  2260.  dc.w -1
  2261.  
  2262.  
  2263. MASTERPLAYERMENU_TXT:
  2264. ;      0123456789012345678901234567890123456789
  2265.  dc.b '                                        ' ;0
  2266.  dc.b '                                        ' ;1
  2267.  dc.b '                                        ' ;2
  2268.  dc.b '                                        ' ;3
  2269.  dc.b '                                        ' ;4
  2270.  dc.b '                                        ' ;5
  2271.  dc.b '                                        ' ;6
  2272.  dc.b '                                        ' ;7
  2273.  dc.b '                                        ' ;8
  2274.  dc.b '                                        ' ;9
  2275.  dc.b '                                        ' ;0
  2276.  dc.b '                                        ' ;1
  2277.  dc.b '            2 PLAYER  MASTER            ' ;2
  2278.  dc.b '                                        ' ;3
  2279. CURRENTLEVELLINEM:
  2280.  dc.b '           LEVEL 1 : THE GATE           ' ;4 
  2281.  dc.b '                                        ' ;5
  2282.  dc.b '               PLAY  GAME               ' ;6
  2283.  dc.b '                                        ' ;7
  2284.  dc.b '            CONTROL  OPTIONS            ' ;8
  2285.  dc.b '                                        ' ;9
  2286.  dc.b '                                        ' ;0
  2287.  dc.b '                                        ' ;1
  2288.  dc.b '                                        ' ;2
  2289.  dc.b '                                        ' ;3
  2290.  dc.b '                                        ' ;4
  2291.  dc.b '                                        ' ;5
  2292.  dc.b '                                        ' ;6
  2293.  dc.b '                                        ' ;7
  2294.  dc.b '                                        ' ;8
  2295.  dc.b '                                        ' ;9
  2296.  dc.b '                                        ' ;0
  2297.  dc.b '                                        ' ;1
  2298.  
  2299. MASTERPLAYERMENU_OPTS:
  2300.  dc.w 12,12,16,1
  2301.  dc.w 6,14,28,1
  2302.  dc.w 15,16,10,1
  2303.  dc.w 12,18,16,1
  2304.  dc.w -1
  2305.  
  2306. SLAVEPLAYERMENU_TXT:
  2307. ;      0123456789012345678901234567890123456789
  2308.  dc.b '                                        ' ;0
  2309.  dc.b '                                        ' ;1
  2310.  dc.b '                                        ' ;2
  2311.  dc.b '                                        ' ;3
  2312.  dc.b '                                        ' ;4
  2313.  dc.b '                                        ' ;5
  2314.  dc.b '                                        ' ;6
  2315.  dc.b '                                        ' ;7
  2316.  dc.b '                                        ' ;8
  2317.  dc.b '                                        ' ;9
  2318.  dc.b '                                        ' ;9
  2319.  dc.b '                                        ' ;1
  2320.  dc.b '             2 PLAYER SLAVE             ' ;4
  2321.  dc.b '                                        ' ;3
  2322.  dc.b '               PLAY  GAME               ' ;2
  2323.  dc.b '                                        ' ;5
  2324.  dc.b '            CONTROL  OPTIONS            ' ;0
  2325.  dc.b '                                        ' ;1
  2326.  dc.b '                                        ' ;3
  2327.  dc.b '                                        ' ;7
  2328.  dc.b '                                        ' ;7
  2329.  dc.b '                                        ' ;3
  2330.  dc.b '                                        ' ;3
  2331.  dc.b '                                        ' ;3
  2332.  dc.b '                                        ' ;4
  2333.  dc.b '                                        ' ;5
  2334.  dc.b '                                        ' ;6
  2335.  dc.b '                                        ' ;7
  2336.  dc.b '                                        ' ;9
  2337.  dc.b '                                        ' ;9
  2338.  dc.b '                                        ' ;9
  2339.  dc.b '                                        ' ;9
  2340.  
  2341.  
  2342. PROTMENU_TXT:
  2343. ;      0123456789012345678901234567890123456789
  2344.  dc.b '                                        ' ;0
  2345.  dc.b '                                        ' ;1
  2346.  dc.b '                                        ' ;2
  2347.  dc.b '                                        ' ;3
  2348.  dc.b '                                        ' ;4
  2349.  dc.b '                                        ' ;5
  2350.  dc.b '                                        ' ;6
  2351.  dc.b '                                        ' ;7
  2352.  dc.b '                                        ' ;8
  2353.  dc.b '                                        ' ;9
  2354.  dc.b '                                        ' ;0
  2355.  dc.b '                                        ' ;1
  2356.  dc.b ' TYPE IN THREE DIGIT CODE FROM MANUAL : ' ;2
  2357.  dc.b '                                        ' ;3
  2358. PROTLINE:
  2359.  dc.b '        TABLE 00 ROW 00 COLUMN 00       ' ;4
  2360.  dc.b '                                        ' ;5
  2361.  dc.b '                                        ' ;6
  2362.  dc.b '                                        ' ;7
  2363.  dc.b '                                        ' ;8
  2364.  dc.b '                                        ' ;9
  2365.  dc.b '                                        ' ;0
  2366.  dc.b '                                        ' ;1
  2367.  dc.b '                                        ' ;2
  2368.  dc.b '                                        ' ;3
  2369.  dc.b '                                        ' ;4
  2370.  dc.b '                                        ' ;5
  2371.  dc.b '                                        ' ;6
  2372.  dc.b '                                        ' ;7
  2373.  dc.b '                                        ' ;9
  2374.  dc.b '                                        ' ;0
  2375.  dc.b '                                        ' ;1
  2376.  
  2377.  
  2378.  
  2379. SLAVEPLAYERMENU_OPTS:
  2380.  dc.w 12,12,16,1
  2381.  dc.w 15,14,10,1
  2382.  dc.w 12,16,16,1
  2383.  dc.w -1
  2384.  
  2385.  
  2386. PLAYER_OPTS:
  2387. ;      0123456789012345678901234567890123456789
  2388.  dc.b '                 1 PLAYER               '
  2389.  dc.b '             2  PLAYER MASTER           '
  2390.  dc.b '              2 PLAYER SLAVE            '
  2391.  
  2392. LEVEL_OPTS:
  2393. ;      0123456789012345678901234567890123456789
  2394.  dc.b  '       CU AMIGA *EXCLUSIVE* DEMO        '
  2395.  dc.b '      LEVEL  2 :       STORAGE BAY      '
  2396.  dc.b '      LEVEL  3 :     SEWER NETWORK      '
  2397.  dc.b '      LEVEL  4 :     THE COURTYARD      '
  2398.  dc.b '      LEVEL  5 :      SYSTEM PURGE      '
  2399.  dc.b '      LEVEL  6 :         THE MINES      '
  2400.  dc.b '      LEVEL  7 :       THE FURNACE      '
  2401.  dc.b '      LEVEL  8 :  TEST ARENA GAMMA      '
  2402.  dc.b '      LEVEL  9 :      SURFACE ZONE      '
  2403.  dc.b '      LEVEL 10 :     TRAINING AREA      '
  2404.  dc.b '      LEVEL 11 :       ADMIN BLOCK      '
  2405.  dc.b '      LEVEL 12 :           THE PIT      '
  2406.  dc.b '      LEVEL 13 :            STRATA      '
  2407.  dc.b '      LEVEL 14 :      REACTOR CORE      '
  2408.  dc.b '      LEVEL 15 :     COOLING TOWER      '
  2409.  dc.b '      LEVEL 16 :    COMMAND CENTRE      '
  2410.  
  2411. CONTROL_TXT:
  2412. ;      0123456789012345678901234567890123456789
  2413.  dc.b '                                        ' ;0
  2414.  dc.b '                                        ' ;1
  2415.  dc.b '            DEFINE  CONTROLS            ' ;2
  2416.  dc.b '                                        ' ;3
  2417. ;KEY_LINES:
  2418.  dc.b '     TURN LEFT                  LCK     ' ;4
  2419.  dc.b '     TURN RIGHT                 RCK     ' ;5
  2420.  dc.b '     FORWARDS                   UCK     ' ;6
  2421.  dc.b '     BACKWARDS                  DCK     ' ;7
  2422.  dc.b '     FIRE                       RAL     ' ;8
  2423.  dc.b '     OPERATE DOOR/LIFT/SWITCH   SPC     ' ;9
  2424.  dc.b '     RUN                        RSH     ' ;0
  2425.  dc.b '     FORCE SIDESTEP             RAM     ' ;1
  2426.  dc.b '     SIDESTEP LEFT               .      ' ;2
  2427.  dc.b '     SIDESTEP RIGHT              /      ' ;3
  2428.  dc.b '     DUCK                        D      ' ;4
  2429.  dc.b '     LOOK BEHIND                 L      ' ;5
  2430.  dc.b '     JUMP                       KP0     ' ;6
  2431.  dc.b '     LOOK UP                     ]      ' ;7
  2432.  dc.b '     LOOK DOWN                   #      ' ;8
  2433.  dc.b '     CENTRE VIEW                 ;      ' ;9
  2434.  dc.b '     NEXT WEAPON                RET     ' ;9
  2435.  dc.b '                                        ' ;9
  2436.  dc.b '             OTHER CONTROLS             ' ;0
  2437.  dc.b '                                        ' ;1
  2438.  dc.b '1-0   Select Weapon P              Pause' ;2
  2439.  dc.b 'F1   Zoom in on map F3 4/8 Channel Sound' ;3
  2440.  dc.b 'F2  Zoom out on map F4 Mono/Stereo Sound' ;4
  2441.  dc.b 'F5 Recall Message   F6    Render Quality'  
  2442.  dc.b '    Keypad 1-9 scroll map, 5 centres    ' ;5
  2443.  dc.b '                                        ' ;7
  2444.  dc.b '               MAIN  MENU               ' ;8
  2445.  dc.b '                                        ' ;1
  2446.  
  2447. CONTROL_OPTS:
  2448.  dc.w 5,4,30,1
  2449.  dc.w 5,5,30,1
  2450.  dc.w 5,6,30,1
  2451.  dc.w 5,7,30,1
  2452.  dc.w 5,8,30,1
  2453.  dc.w 5,9,30,1
  2454.  dc.w 5,10,30,1
  2455.  dc.w 5,11,30,1
  2456.  dc.w 5,12,30,1
  2457.  dc.w 5,13,30,1
  2458.  dc.w 5,14,30,1
  2459.  dc.w 5,15,30,1
  2460.  dc.w 5,16,30,1
  2461.  dc.w 5,17,30,1
  2462.  dc.w 5,18,30,1
  2463.  dc.w 5,19,30,1
  2464.  dc.w 5,20,30,1
  2465.  dc.w 15,30,10,1
  2466.  dc.w -1
  2467.  
  2468. PLOPT: dc.w 0
  2469.  
  2470. INSTRUCTIONS_TXT:
  2471. ;      0123456789012345678901234567890123456789
  2472.  dc.b 'Main controls:                          ' ;1
  2473.  dc.b '                                        ' ;2
  2474.  dc.b 'Curs Keys = Forward / Backward          ' ;3
  2475.  dc.b '            Turn left / right           ' ;4
  2476.  dc.b '          Right Alt = Fire              ' ;5
  2477.  dc.b '        Right Shift = Run               ' ;6
  2478.  dc.b '                  > = Slide Left        ' ;7
  2479.  dc.b '                  ? = Slide Right       ' ;8
  2480.  dc.b '              SPACE = Operate Door/Lift ' ;9
  2481.  dc.b '                  D = Duck              ' ;0
  2482.  dc.b '                  J = Joystick Control  ' ;1
  2483.  dc.b '                  K = Keyboard Control  ' ;2
  2484.  dc.b '                                        ' ;3
  2485.  dc.b '              1,2,3 = Select weapon     ' ;4
  2486.  dc.b '              ENTER = Toggle screen size' ;5
  2487.  dc.b '                ESC = Quit              ' ;6
  2488.  dc.b '                                        ' ;7
  2489.  dc.b '                                        ' ;8
  2490.  dc.b 'The one player game has no objective and' ;9
  2491.  dc.b 'the only way to finish is to die or quit' ;0
  2492.  dc.b '                                        ' ;1
  2493.  dc.b 'The two-player game is supposed to be a ' ;2
  2494.  dc.b 'fight to the death but will probably be ' ;3
  2495.  dc.b 'a fight-till-we-find-the-rocket-launcher' ;4
  2496.  dc.b 'then-blow-ourselves-up type game.       ' ;5
  2497.  dc.b '                                        ' ;6
  2498.  dc.b 'LOOK OUT FOR TELEPORTERS: They usually  ' ;7
  2499.  dc.b 'have glowing red walls and overhead     ' ;8
  2500.  dc.b 'lights. Useful for getting behind your  ' ;9
  2501.  dc.b ' opponent!                              ' ;0
  2502.  dc.b '  Just a taster of what is to come....  ' ;1
  2503.  dc.b '                                        ' ;0
  2504.  
  2505. INSTRUCTIONS_OPTS:
  2506.  dc.w 0,0,0,1
  2507.  dc.w -1
  2508.  
  2509. CREDITMENU_TXT:
  2510.  
  2511. ;      0123456789012345678901234567890123456789
  2512.  dc.b '    Programming, Game Code, Graphics    ' ;0
  2513.  dc.b '         Game Design and Manual         ' ;1
  2514.  dc.b '            Andrew Clitheroe            ' ;2
  2515.  dc.b '                                        ' ;3
  2516.  dc.b '       Alien and Scenery Graphics       ' ;4
  2517.  dc.b '             Michael  Green             ' ;5
  2518.  dc.b '                                        ' ;6
  2519.  dc.b '           3D Object Designer           ' ;7
  2520.  dc.b '            Charles Blessing            ' ;8
  2521.  dc.b '                                        ' ;9
  2522.  dc.b '              Level Design              ' ;0
  2523.  dc.b 'Jackie Lang   Michael Green  Ben Chanter' ;1
  2524.  dc.b '                                        ' ;3
  2525.  dc.b '                                        ' ;3
  2526.  dc.b '           Creative  Director           ' ;4
  2527.  dc.b '              Martyn Brown              ' ;5
  2528.  dc.b '                                        ' ;6
  2529.  dc.b '       Project Manager and Manual       ' ;7
  2530.  dc.b '          Phil Quirke-Webster           ' ;8
  2531.  dc.b '                                        ' ;9
  2532.  dc.b '                 Music                  ' ;0
  2533.  dc.b '           Ben "666" Chanter            ' ;1
  2534.  dc.b '                                        ' ;2
  2535.  dc.b '      Cover Illustration and Logo       ' ;3
  2536.  dc.b '             Kevin Jenkins              ' ;4
  2537.  dc.b '                                        ' ;5
  2538.  dc.b '      Packaging and Manual Design       ' ;6
  2539.  dc.b '               Paul Sharp               ' ;7
  2540.  dc.b '                                        ' ;8
  2541.  dc.b '             QA and Playtest            ' ;9
  2542.  dc.b '     Too numerous to mention here!      ' ;0
  2543.  dc.b '                                        ' ;1
  2544.  
  2545.  dc.b '    Serial Link and 3D Object Editor:   ' ;4
  2546.  dc.b '                   by                   ' ;5
  2547.  dc.b '            Charles Blessing            ' ;6
  2548.  dc.b '                                        ' ;7
  2549.  dc.b '                Graphics:               ' ;8
  2550.  dc.b '                   by                   ' ;9
  2551.  dc.b '              Mike  Oakley              ' ;0
  2552.  dc.b '                                        ' ;1
  2553.  dc.b '             Title  Picture             ' ;2
  2554.  dc.b '                   by                   ' ;3
  2555.  dc.b '               Mike Green               ' ;4
  2556.  dc.b '                                        ' ;5
  2557.  dc.b ' Inspiration, incentive, moral support, ' ;6
  2558.  dc.b '     level design and plenty of tea     ' ;7
  2559.  dc.b '         generously supplied by         ' ;8
  2560.  dc.b '                                        ' ;9
  2561.  dc.b '              Jackie  Lang              ' ;0
  2562.  dc.b '                                        ' ;1
  2563.  dc.b '    Music for the last demo composed    ' ;2
  2564.  dc.b '       by the inexpressibly evil:       ' ;3
  2565.  dc.b '                                        ' ;8
  2566.  dc.b '            *BAD* BEN CHANTER           ' ;9
  2567.  dc.b '                                        ' ;0
  2568.  dc.b '    Sadly no room for music this time   ' ;1
  2569.  dc.b '                                        ' ;7
  2570.  dc.b '                                        ' ;7
  2571.  
  2572. CREDITMENU_OPTS:
  2573.  dc.w 0,0,1,1
  2574.  dc.w -1
  2575.  
  2576.  
  2577. ;      0123456789012345678901234567890123456789
  2578.  dc.b '                                        ' ;0
  2579.  dc.b '                                        ' ;1
  2580.  dc.b '                                        ' ;2
  2581.  dc.b '                                        ' ;3
  2582.  dc.b '                                        ' ;4
  2583.  dc.b '                                        ' ;5
  2584.  dc.b '                                        ' ;6
  2585.  dc.b '                                        ' ;7
  2586.  dc.b '                                        ' ;8
  2587.  dc.b '                                        ' ;9
  2588.  dc.b '                                        ' ;0
  2589.  dc.b '                                        ' ;1
  2590.  dc.b '                                        ' ;2
  2591.  dc.b '                                        ' ;3
  2592.  dc.b '                                        ' ;4
  2593.  dc.b '                                        ' ;5
  2594.  dc.b '                                        ' ;6
  2595.  dc.b '                                        ' ;7
  2596.  dc.b '                                        ' ;8
  2597.  dc.b '                                        ' ;9
  2598.  dc.b '                                        ' ;0
  2599.  dc.b '                                        ' ;1
  2600.  dc.b '                                        ' ;2
  2601.  dc.b '                                        ' ;3
  2602.  dc.b '                                        ' ;4
  2603.  dc.b '                                        ' ;5
  2604.  dc.b '                                        ' ;6
  2605.  dc.b '                                        ' ;7
  2606.  dc.b '                                        ' ;8
  2607.  dc.b '                                        ' ;9
  2608.  dc.b '                                        ' ;0
  2609.  dc.b '                                        ' ;1
  2610.  
  2611.  
  2612. ********************************************************
  2613.  
  2614. PUTIN32:
  2615.  
  2616.  moveq #0,d2
  2617.  moveq #0,d3
  2618.  moveq #0,d4
  2619.  moveq #0,d5
  2620.  moveq #0,d6
  2621.  moveq #0,d7
  2622.  
  2623.  move.w #31,d2
  2624. p32loop:
  2625.  moveq #0,d5
  2626.  move.l (a0)+,d3
  2627.  move.w d3,d4
  2628.  swap d3
  2629.  move.b d4,d5
  2630.  lsr.w #8,d4
  2631.  
  2632.  muls d0,d3
  2633.  muls d0,d4
  2634.  muls d0,d5
  2635.  lsr.l #8,d3
  2636.  lsr.l #8,d4
  2637.  lsr.l #8,d5
  2638.  move.w d3,d6
  2639.  swap d3
  2640.  move.w d6,d3
  2641.  move.w d4,d6
  2642.  swap d4
  2643.  move.w d6,d4
  2644.  move.w d5,d6
  2645.  swap d5
  2646.  move.w d6,d5
  2647.  and.w #%11110000,d3
  2648.  and.w #%11110000,d4
  2649.  and.w #%11110000,d5
  2650.  lsl.w #4,d3
  2651.  add.w d4,d3
  2652.  lsr.w #4,d5
  2653.  add.w d5,d3
  2654.  move.w d3,2(a1)
  2655.  swap d3
  2656.  swap d4
  2657.  swap d5
  2658.  and.w #%1111,d3
  2659.  and.w #%1111,d4
  2660.  and.w #%1111,d5
  2661.  lsl.w #8,d3
  2662.  lsl.w #4,d4
  2663.  add.w d4,d3
  2664.  add.w d5,d3
  2665.  move.w d3,2+(132*4)(a1)
  2666.  addq #4,a1
  2667.  dbra d2,p32loop
  2668.  
  2669.  
  2670.  rts
  2671.  
  2672. **************************************
  2673.  
  2674. FADEAMOUNT: dc.w 0
  2675. FADEVAL: dc.w 0
  2676.  
  2677. FADEUPTITLE:
  2678.  
  2679.  moveq #0,d0
  2680.  moveq #0,d1
  2681.  move.w FADEVAL,d0
  2682.  move.w FADEAMOUNT,d1
  2683. fadeuploop:
  2684.  
  2685.  move.l #TITLEPAL,a0
  2686.  move.l #TITLEPALCOP,a1
  2687.  
  2688. wvb:
  2689.  btst #5,$dff000+intreqrl
  2690.  beq.s wvb
  2691.  move.w #$20,$dff000+intreq 
  2692.  
  2693.  bsr PUTIN32
  2694.  add.w #4,a1
  2695.  bsr PUTIN32
  2696.  add.w #4,a1
  2697.  bsr PUTIN32
  2698.  add.w #4,a1
  2699.  bsr PUTIN32
  2700.  
  2701.  addq.w #8,d0
  2702.  dbra d1,fadeuploop
  2703.  
  2704.  subq #8,d0
  2705.  move.w d0,FADEVAL
  2706.  
  2707.  rts
  2708.  
  2709. CLEARTITLEPAL:
  2710.  PRSDP
  2711.  move.l #TITLEPALCOP,a0
  2712.  move.w #7,d1
  2713. clrpal:
  2714.  move.w #31,d0
  2715. clr32
  2716.  move.w #0,2(a0)
  2717.  addq #4,a0
  2718.  dbra d0,clr32
  2719.  addq #4,a0
  2720.  dbra d1,clrpal
  2721.  PRSDQ
  2722.  rts
  2723.  
  2724. FADEDOWNTITLE:
  2725.  
  2726.  move.w FADEVAL,d0
  2727.  move.w FADEAMOUNT,d1
  2728. fadedownloop:
  2729.  
  2730.  move.l #TITLEPAL,a0
  2731.  move.l #TITLEPALCOP,a1
  2732.  
  2733. .wvb:
  2734.  btst #5,$dff000+intreqrl
  2735.  beq.s .wvb
  2736.  move.w #$20,$dff000+intreq 
  2737.  
  2738.  bsr PUTIN32
  2739.  add.w #4,a1
  2740.  bsr PUTIN32
  2741.  add.w #4,a1
  2742.  bsr PUTIN32
  2743.  add.w #4,a1
  2744.  bsr PUTIN32
  2745.  
  2746.  subq.w #8,d0
  2747.  dbra d1,fadedownloop
  2748.  
  2749.  addq #8,d0
  2750.  move.w d0,FADEVAL
  2751.  
  2752.  rts
  2753.  
  2754. LOADTITLESCRN2:
  2755.  
  2756.  
  2757.  move.l #MEMF_CLEAR,d1
  2758.  move.l #52400,d0
  2759.  move.l 4.w,a6
  2760.  jsr    _LVOAllocMem(a6)
  2761.  tst.l  d0
  2762.  beq    .nomem
  2763.  
  2764.  move.l d0,tempptr
  2765.  
  2766.  move.l TITLESCRNPTR,d1
  2767.  move.l #1005,d2
  2768.  move.l doslib,a6
  2769.  jsr -30(a6)
  2770.  move.l d0,handle
  2771.  move.l d0,d1
  2772.  move.l doslib,a6
  2773. ; move.l TITLESCRNADDR,d2
  2774.  move.l tempptr,d2
  2775.  move.l #10240*7,d3
  2776.  jsr -42(a6)
  2777.  move.l doslib,a6
  2778.  move.l handle,d1
  2779.  jsr -36(a6)
  2780.  
  2781.     
  2782.  move.l TITLESCRNADDR,a0
  2783.  move.l tempptr,d0
  2784.  
  2785.  moveq #0,d1
  2786.  lea WorkSpace,a1
  2787.  lea $0,a2
  2788.  jsr unLHA
  2789.  
  2790.  move.l tempptr,a1
  2791.  move.l #52400,d0
  2792.  CALLEXEC FreeMem
  2793.   
  2794. .nomem
  2795.  
  2796.  rts
  2797.  
  2798. tempptr dc.l 0
  2799.  
  2800.  
  2801. GETTITLEMEM:
  2802.  move.l #2,d1
  2803.  move.l #10240*7,d0
  2804.  move.l 4.w,a6
  2805.  jsr -198(a6)
  2806.  move.l d0,TITLESCRNADDR
  2807.  
  2808.  move.l #$dff000-$2cdfe4,a4
  2809.  
  2810.  move.l #2,d1
  2811.  move.l #258*16*5,d0
  2812.  move.l 4.w,a6
  2813.  jsr -198(a6)
  2814.  move.l d0,OPTSPRADDR
  2815.  
  2816.  rts
  2817.  
  2818. ProtChkJLev1:
  2819.  
  2820. PROTSETUP:
  2821.  incbin "ab3:includes/protsetupenc"
  2822.  
  2823. ; Need to: Decode protection calling
  2824. ; routine
  2825. ; use null values to call it and erase
  2826. ; it from memory
  2827. ; erase this routine and return.
  2828.  
  2829. ; include "ab3:source/protsetup"
  2830.  
  2831.  
  2832. RELEASETITLEMEM:
  2833.  move.l TITLESCRNADDR,d1
  2834.  move.l d1,a1
  2835.  move.l #10240*7,d0
  2836.  move.l 4.w,a6
  2837.  jsr -210(a6)
  2838.  
  2839.  move.l OPTSPRADDR,d1
  2840.  move.l d1,a1
  2841.  move.l #258*80,d0
  2842.  move.l 4.w,a6
  2843.  jsr -210(a6)
  2844.  rts
  2845.  
  2846.  
  2847. PROTCALLENC:
  2848. ; incbin "ab3:source/protcallenc.bin
  2849.  
  2850. ; one pass, all instructions executed.
  2851. ; must call protection routine,store
  2852. ; value somewhere, call ask routine,
  2853. ; compare returned value, if correct
  2854. ; set up all values, then return.
  2855.  
  2856. ; include "ab3:source_4000/protcallenc"
  2857.  
  2858. ENDPROT:
  2859.  
  2860. LOADTITLESCRN:
  2861.  
  2862.  move.l #TITLESCRNNAME,d1
  2863.  move.l #1005,d2
  2864.  move.l doslib,a6
  2865.  jsr -30(a6)
  2866.  move.l d0,handle
  2867.  move.l d0,d1
  2868.  move.l doslib,a6
  2869.  move.l TITLESCRNADDR,d2
  2870.  move.l #10240*7,d3
  2871.  jsr -42(a6)
  2872.  move.l doslib,a6
  2873.  move.l handle,d1
  2874.  jsr -36(a6)
  2875.  
  2876.  rts
  2877.  
  2878. RVAL2: dc.w 0
  2879.  
  2880. SETUPTITLESCRN:
  2881.  
  2882.  PRSDR
  2883.  move.l #OPTCOP,a0
  2884.  move.l #rain,a1
  2885.  move.w #255,d0
  2886. putinrain:
  2887.  move.w (a1)+,d1
  2888.  move.w d1,6(a0)
  2889.  move.w d1,6+4(a0)
  2890.  move.w d1,6+8(a0)
  2891.  move.w d1,6+12(a0)
  2892.  add.w #4*14,a0
  2893.  
  2894.  dbra d0,putinrain
  2895.  
  2896. ; Put addr into copper.
  2897.  move.l OPTSPRADDR,d0
  2898.  move.w d0,tsp0l
  2899.  swap d0
  2900.  move.w d0,tsp0h
  2901.  swap d0
  2902.  add.l #258*16,d0
  2903.  move.w d0,tsp1l
  2904.  swap d0
  2905.  move.w d0,tsp1h
  2906.  swap d0
  2907.  add.l #258*16,d0
  2908.  move.w d0,tsp2l
  2909.  swap d0
  2910.  move.w d0,tsp2h
  2911.  swap d0
  2912.  add.l #258*16,d0
  2913.  move.w d0,tsp3l
  2914.  swap d0
  2915.  move.w d0,tsp3h
  2916.  swap d0
  2917.  add.l #258*16,d0
  2918.  move.w d0,tsp4l
  2919.  swap d0
  2920.  move.w d0,tsp4h
  2921.  
  2922.  move.l #nullspr,d0
  2923.  move.w d0,tsp5l
  2924.  move.w d0,tsp6l
  2925.  move.w d0,tsp7l
  2926.  swap d0
  2927.  move.w d0,tsp5h
  2928.  move.w d0,tsp6h
  2929.  move.w d0,tsp7h 
  2930.  
  2931.  move.l TITLESCRNADDR,d0
  2932.  move.w d0,ts1l
  2933.  swap d0
  2934.  move.w d0,ts1h
  2935.  swap d0
  2936.  add.l #10240,d0
  2937.  move.w d0,ts2l
  2938.  swap d0
  2939.  move.w d0,ts2h
  2940.  swap d0
  2941.  add.l #10240,d0
  2942.  move.w d0,ts3l
  2943.  swap d0
  2944.  move.w d0,ts3h
  2945.  swap d0
  2946.  add.l #10240,d0
  2947.  move.w d0,ts4l
  2948.  swap d0
  2949.  move.w d0,ts4h
  2950.  swap d0
  2951.  add.l #10240,d0
  2952.  move.w d0,ts5l
  2953.  swap d0
  2954.  move.w d0,ts5h
  2955.  swap d0
  2956.  add.l #10240,d0
  2957.  move.w d0,ts6l
  2958.  swap d0
  2959.  move.w d0,ts6h
  2960.  swap d0
  2961.  add.l #10240,d0
  2962.  move.w d0,ts7l
  2963.  swap d0
  2964.  move.w d0,ts7h
  2965.  rts 
  2966.  
  2967. RVAL1: dc.w 0
  2968.  
  2969. DummyAdds:
  2970.  dc.l dummy-78935450
  2971.  dc.l dummy-78935450
  2972.  dc.l dummy-78935450
  2973.  dc.l dummy-78935450
  2974.  dc.l dummy-78935450
  2975.  dc.l dummy-78935450
  2976.  dc.l dummy-78935450
  2977.  dc.l dummy-78935450
  2978.  dc.l dummy-78935450
  2979.  dc.l dummy-78935450
  2980.  
  2981. LEVELTEXTNAME: dc.b 'TKG1:includes/TEXT_FILE'
  2982.  
  2983.  even
  2984.  
  2985. LEVELTEXT:
  2986.  dc.l 0
  2987.  
  2988. dummycall
  2989.  dc.w $4e75-123
  2990.  
  2991. protspace: 
  2992.  ds.l 200
  2993.  
  2994. ; include "ab3:source_4000/LEVEL_BLURB"
  2995.  
  2996. font:
  2997.  incbin "Starquake.font.bin"
  2998.  
  2999. rain: incbin "optcop"
  3000.  
  3001.     include "ab3:demo/menu/menunb.s"